このようなテーブルを変換したいと思います (*):
set.seed(1)
mydata <- data.frame(ID=rep(1:4, each=3), R=rep(1:3, times=4), FIXED=rep(runif(4), each=3), AAA=rnorm(12), BBB=rbinom(12,12,0.5), CCC=runif(12))
ID R FIXED AAA BBB CCC
1 1 0.26 -0.83 8 0.82
1 2 0.26 1.59 5 0.64
1 3 0.26 0.32 6 0.78
2 1 0.37 -0.82 6 0.55
2 2 0.37 0.48 6 0.52
2 3 0.37 0.73 4 0.78
3 1 0.57 0.57 8 0.02
3 2 0.57 -0.30 7 0.47
3 3 0.57 1.51 7 0.73
4 1 0.90 0.38 4 0.69
4 2 0.90 -0.62 7 0.47
4 3 0.90 -2.21 6 0.86
次のように、ワイド フォーマットに変換します。
ID FIXED AAA1 BBB2 CCC2 FIXED2 AAA2 BBB2 CCC2 FIXED3 AAA3 BBB3 CCC3
1 0.27 0.49 7 0.73 0.37 0.74 4 0.69 0.57 0.58 7 0.48
2 0.91 -0.31 6 0.86 0.20 1.51 8 0.44 0.90 0.39 7 0.24
3 0.94 -0.62 7 0.07 0.66 -2.21 6 0.10 0.63 1.12 6 0.32
4 0.06 -0.04 7 0.52 0.21 -0.02 3 0.66 0.18 0.94 6 0.41
どうすればいいですか?
私は試してみました
dcast(mydata, ID + FIXED ~ R, value.var=(names(mydata)[3:5])
または、「AAA」、「BBB」、「CCC」などの列名を書いても、エラーが発生し、必要なワイド フォーマットを取得できません。他のオプションも試しましたが、うまくいきませんでした。
どうすればいいですか?
(*) 実際にはもっと多くの列がありますが、ストーリーは同じです。
エラーは次のとおりです。
Error in .subset2(x, i, exact = exact) :
recursive indexing failed at level 2
In addition: Warning message:
In if (!(value.var %in% names(data))) { :
the condition has length > 1 and only the first element will be used