重组data.frame

时间:2013-10-22 14:52:38

标签: r

我有这样的表:

Id Control1 Control2 Control2 Treat1  Treat2 Treat3 Name
5    34,5     44,5     43,2     67,4    55,6   76,6 Leptin
8    55         34     41,5     61,4    58,6   65,7 Grazin
9    25         33     48,5     63,1    52,3   61,3 Osey

这就是我想要的:

Id 
 5  34,5 Leptin Control1
 5  44,5 Leptin Control2
 5  43,2 Leptin Control3
 5  67,4 Leptin Treat1
 5  55,6 Leptin Treat2
 5  76,6 Leptin Treat3
 and so on....

我不知道该怎么做,我甚至不知道是否可能:)。

3 个答案:

答案 0 :(得分:6)

您的问题并不完全清楚,但您是否正试图沿着这些方向做点什么?

library(reshape2)

melt(dt, id.vars = c('ID','Name'))

答案 1 :(得分:2)

使用melt包中的reshape2功能:

install.packages("reshape2")
library(reshape2)
melt(df, measure.vars=2:7)

答案 2 :(得分:0)

使用基础R中的reshape

reshape(df1,varying=names(df1)[2:7],times=names(df1)[2:7],v.names="value",direction="long")
             Id   Name       time value id
1.Control1    5 Leptin   Control1  34,5  1
2.Control1    8 Grazin   Control1    55  2
3.Control1    9    Ose   Control1    25  3
1.Control2    5 Leptin   Control2  44,5  1
2.Control2    8 Grazin   Control2    34  2
3.Control2    9    Ose   Control2    33  3
1.Control2.1  5 Leptin Control2.1  43,2  1
2.Control2.1  8 Grazin Control2.1  41,5  2
3.Control2.1  9    Ose Control2.1  48,5  3
1.Treat1      5 Leptin     Treat1  67,4  1
2.Treat1      8 Grazin     Treat1  61,4  2
3.Treat1      9    Ose     Treat1  63,1  3
1.Treat2      5 Leptin     Treat2  55,6  1
2.Treat2      8 Grazin     Treat2  58,6  2
3.Treat2      9    Ose     Treat2  52,3  3
1.Treat3      5 Leptin     Treat3  76,6  1
2.Treat3      8 Grazin     Treat3  65,7  2
3.Treat3      9    Ose     Treat3  61,3  3