【发布时间】:2015-12-08 05:04:49
【问题描述】:
我有一个看起来像这样的宽数据框:
ID Time Amount CabMean CabNum PartMean PartNum DinnMean DinNum Ex
1 1 1 27 0.654621546 8 NA 7 0.316791872 6 0
2 1 2 82 0.667461321 3 0.327594876 4 0.346798127 2 1
3 1 3 52 0.313976132 1 NA 6 0.197837257 7 0
4 1 4 99 0.798328712 9 0.913751678 4 0.191679538 9 1
我想将其重新整形(使用 reshape2 包)为采用这种形式的长格式(只是将这些数字组合起来):
ID Time Amount Ex Type Mean Num
1 1 2 50 0 Cab 0.65654321 7
2 1 2 50 0 Part 0.65654321 1
3 1 2 50 0 Dinn 0.65654321 4
我尝试过这样的事情:
reshaped <- melt(data, id.vars = c("ID", "Time", "Amount", "Ex"))
这让我得到了这样的东西:
ID Time Amount Ex variable value
1 1 1 10 0 CabMean 0.6565432
2 1 2 12 0 CabMean 0.6565432
所以我只完成了一半,还不太清楚剩下的部分。我如何(从我当前使用的代码或从全新的代码)将类型(Cab、Part、Dinn)提取为单独的列,并创建 2 个额外的列来保存 Mean 和 Num 值?
【问题讨论】:
-
基地
reshape也可以做到:reshape(dat, idvar=c("ID","Time"), direction="long", varying=list(c(4,6,8),c(5,7,9)), times=c("cab","part","dinn"))
标签: r dataframe reshape reshape2