Rで同じidのカラム内の変数の移行のチェック
R3.3.2とパッケージtidyverseを用いて前処理中です。
以下のようなデータなのですが、同じidについて複数回調査(chousaが調査回数)しています。
同じ調査項目(今回はQ1)が0から1に変わってから1回目、2回目、…4回目までのデータがほしいです。
どのようにmutateすればよいでしょうか?
よろしくお願いします。
ID Q1 Q6 chousa …
1 0 3 1
1 1 23 2
1 1
2 0 27 3
2 0 28 4
2 1 29 5
これの場合は
ID change1 change2 …
1 0 0
1 1 0
1 0 1
2 0 0
2 0 0
2 1 0
となるようにしたいです。
追記
同一IDについてQ1が0,0,1,1,1,1,0と来たら
change1:0,0,1,0,0,0,0
change2:0,0,0,1,0,0,0
change3:0,0,0,0,1,0,0
change4:0,0,0,0,0,1,0
change5:0,0,0,0,0,0,0
となるようにしたいです。
mutate(change1=ifelse(Q1==1&Q1-lag(Q1)==1,1,0),
change2=ifelse(Q1==1&lag(change1)==1,1,0),
change3=ifelse(Q1==1&lag(change2)==1,1,0),
change4=ifelse(Q1==1&lag(change3)==1,1,0))
で行けるような気がしますが
id chousa change1 change2 change3
5 2 1 0 0
5 3 0 1 0
5 4 0 0 1
となってほしいものが
id chousa change1 change2 change3
5 2 0 0 1
5 3 0 1 0
5 4 1 0 0
と反対になってしまいます。group_byした時にIDの昇順降順が逆になっているようなのですがどうしたら良いのでしょうか…
→group_by(ID)だけでなくその後にarrange(ID,chousa) で解決しました。