次のデータテーブルがあります。
df = data.frame(id=c(1,1,1,1),timepoint=c("3 months","6 months","9 months","12 months"),
date=c("date1","date2","date3","date4"),bool=c("Y","Y","N","Y"),
name=c("abc","def","ghi","jkl"), stringsAsFactors=F)
そして、次のように id 変数として id を使用して、これを 1 つの行にキャストしたいと思います。
library(reshape2)
melt = melt(df, id=c("id","timepoint"))
df2 = dcast(melt, id~variable+timepoint)
ただし、これにより、希望する順序で列が表示されません。つまり、次のとおりです。
df1 = df2[,c(1,3,7,11,4,8,12,5,9,13,2,6,10)]
以下のコードを使用してみました。これは、融解したテーブルを並べ替えて、希望の順序でキャストされることを期待しています。
var.names = c("date", "bool","name")
times = c("3 months", "6 months", "9 months", "12 months")
melt = melt[order(melt$id, match(melt$timepoint, times), match(melt$variable, var.names)),]
しかし結果は同じで、どうにかして dcast の呼び出しで順序を指定する必要があるようですが、これを行う方法がわかりません。
どうもありがとうございました。明らかな何かを見逃していた場合はお詫び申し上げます。