使用Reshape2创建新数据帧

时间:2014-12-05 15:28:39

标签: r reshape2

我无法将reshape2包用于以下目的。

我有一个类似于:

的数据框
ID = c("1") 
TIME1 = c("0.5")
TIME2 = c("1") 
TIME3 = c("2")
TIME4 = c("5")
DF = data.frame(ID, TIME1, TIME2, TIME3, TIME4) 

我想对其进行转换以获取以下数据帧:

ID = c("1","1","1","1")
TIME = c("0.5", "1", "2","5")
DF2 = data.frame(ID, TIME) 

其中ID在列中重复。

如果我在这个论坛上忽略了类似的答案,我很抱歉,我似乎无法理解融合和dcast功能及其内容。

此外,如果除了reshape2之外的任何其他软件包对此方案有用/更快,请不要犹豫,发布它们。

提前谢谢。

Sincerily,

YKL

1 个答案:

答案 0 :(得分:1)

您可以使用melt

library(reshape2)
melt(DF, id.var='ID', value.name='TIME')[,-2]
#  ID TIME
#1  1  0.5
#2  1    1
#3  1    2
#4  1    5

或者因为你要求其他包

library(dplyr)
library(tidyr)
gather(DF, Var, TIME,-ID) %>% 
                          select(-Var)