将多个列合并为一个(R)

时间:2014-05-07 13:08:56

标签: r

我有一个关于将多列组合成一列的问题。可能有一个不那么花哨的解决方案,但我没有按照我想要的方式得到它。

我的数据集如下所示:

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

提前致谢!

2 个答案:

答案 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