我有一个关于将多列组合成一列的问题。可能有一个不那么花哨的解决方案,但我没有按照我想要的方式得到它。
我的数据集如下所示:
ID TIME M1 M2 M3
1 1 0.5 1.5 2
1 2 0.7 1.8 3
2 1 0.3 1.4 1.5
2 2 0.6 1.5 2.3
我想要做的是以某种方式将列M1到M3组合在一起:
ID TIME Mall Value
1 1 M1 0.5
1 1 M2 1.5
1 1 M3 2
1 2 M1 0.7
1 2 M2 1.8
1 2 M3 3
等
提前致谢!
答案 0 :(得分:2)
这是一个经典的重塑问题。考虑使用reshape2包
library(reshape2)
melt(dd, id.vars=c("ID","TIME"), variable.name="Mall")
答案 1 :(得分:0)
使用基础reshape
:
> reshape(dat, varying=c('M1','M2','M3'), v.names='Mall', timevar='TIME', direction='long')
ID TIME Mall id
1.1 1 1 0.5 1
2.1 1 1 0.7 2
3.1 2 1 0.3 3
4.1 2 1 0.6 4
1.2 1 2 1.5 1
2.2 1 2 1.8 2
3.2 2 2 1.4 3
4.2 2 2 1.5 4
1.3 1 3 2.0 1
2.3 1 3 3.0 2
3.3 2 3 1.5 3
4.3 2 3 2.3 4