tidyrを用いたパネルデータの整備
パネルデータ分析のために同じIDの標本のデータをtydir
のパッケージを用いて幾つかの行に分解したいと考えています。
元のデータにはイベント発生時の時間(L1~L3)が入っています。
id L1 L2 L3 now
1 30 35 NA 42
2 22 26 31 33
3 31 31 NA 34
7 33 NA NA 35
44 NA NA NA 28
(他の共変量もたくさん含まれていますが今回の変形に必要なところだけ抜き出しました。)
改造後のデータは
id event start end count
1 1 0 30 1
1 1 30 35 2
1 0 35 42 3
2
2
2
3
3
3
7 1 0 33 1
7 0 33 35 2
44 0 0 28 1
という感じです。count=1
のstart
は0、end
はL1,count=2
のstart
はL1、end
はL2です。
tidyr
でgather
すれば良さげですが、あまり使い慣れておらず詳しい使い方がわからないので詳しい方に教えていただきたいです。よろしくお願い致します。
data
structure(list(id = c(1, 2, 3, 7, 44), L1 = c(30, 22,
31, 33, NA), L2 = c(35, 26, 31, NA, NA), L3 = c(NA, 31,
NA, NA, NA), now = c(42, 33, 34, 35, 28)), .Names = c("id",
"L1", "L2", "L3", "now"), class = "data.frame", row.names = c(NA,
-5L))
追記
ここに書いてある方法だとmelt
で全ての列が分解されてしまいました。
tidyr
のgather
をmelt
と入れ替え、また分解する列を指定したらうまくいきました。
tidyr::gather("カラム名を収納する列","値を収納する列",分解する列の指定)
という感じで
tidyr::gather("name","end",L1:now)
と指定しました。