2016-08-18 11 views
1

I持って次のデータテーブル:はdcast出力の列の順序を指定します

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)] 

が、私は以下のコードを使用してみました、:

しかし、このdoesntのは、私が希望のために私に列を与えます

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への呼び出しで順序を指定する必要が表示されますが、私は次のことができます。それはその後、所望の順序でキャストすることを期待して溶融したテーブル、どのようにこれを行うかを把握していないので、どんな助けにも大いに感謝します!

どうかありがとうございました。謝罪しています。それを行うには

答えて

2

一つの方法、

ind <- order(as.numeric(gsub('\\D+', '', names(df2[,-1])))) 
df3 <- df2[c(1, ind+1)] 
関連する問題