パネルデータセットをワイドからロングの形式に変換するのに苦労しています。データセットは次のようになります。パネルのデータ型を長形に変更する
ID | KP1_430a | KP1_430b | KP1_430c | KP2_430a | KP2_430b | KP2_430c | KP1_1500a | ...
1 ....
2 ....
KP1; KP2からKP7までがWavesを記述しています。 a、b〜fは特定のItemを表します。 (例えば、当事者aの左から右への右配置)
このデータは長い形式で保存したいと考えています。このように:
ID | Party | Wave | 430 | 1500
1 1 1 .. ..
1 2 1 .. ..
. . .
1 1 2 .. ..
. . .
2 1 1 .. ..
リサーブ機能を使用しようとしました。しかし、時間が経つにつれて、また当事者の間で同時に問題を作り直しました。
ここには小さなdata.frameの例があります。
data <- data.frame(matrix(rnorm(10),2,10))
data[,1] <- 1:2
names(data) <- c("ID","KP1_430a" , "KP1_430b" , "KP1_430c" , "KP2_430a" , "KP2_430b ", "KP2_430c ", "KP1_1500a" ,"KP1_1500b", "KP1_1500c")
これは私がどれくらい得るかです。
data_long <- reshape(data,varying=list(names(data)[2:4],names(data)[5:7], names(data[8:10]),
v.names=c("KP1_430","KP2_430","KP1_1500"),
direction="long", timevar="Party")
問題が残っています。どのようにして、長い形式の可変変数も得ることができますか?そして、このデータを再構成するよりエレガントな方法がありますか?上記のコードでは、各ウェーブと変数の名前(名前(データ)[2:4])を入力する必要があります。この小さなdata.frameではOkですが、Datasetはもっと大きくなります。
EDIT:どのようにこの変換を手で行うことができますか:私は実際にこれを実行しました。ページ長のコードファイルが残っています。
まず、IDがTime = 1、Party = 1の場合はKP1_430aとKP1_1500aをバインドします。第2に、すべてのパーティー[b-f]に対して同じオブジェクトを作成し、パーティーインデックスをそれぞれ変更し、それを行ごとに追加します。残りの波[2-7]に対してそれぞれ1と2のステップを実行して、パーティーと時間varをそれぞれ変更し、それらを行ごとに追加します。
長い形式で別の列を430と1500にする場合は、それらの条件のデータと同じ量のデータをワイドにする必要があります。あなたが持っている方法では、あなたは1500カラムに多くのNAを持っていますか...それともそうしたいのですか? – John
ああ、これはおそらくすべてのスケッチです。これらの2つの変数には波数(1-7)とパーティアイテム(a-f)が同量です。従って:KP [1-7] _430 [a-f]、KP [1-7] _1500 [a-f]。 – lstoetze
しかし、データセット内のいくつかの変数には、(a)いくつかの波のデータのみがあります。パーティー固有ではないKP [146] _1640 [a-f]または(b)。 KP [1-7] _1490。 – lstoetze