【发布时间】:2016-07-26 08:34:51
【问题描述】:
如何逐行融合数据框? 我在论坛上找到了一个真正的similar question,但如果没有不同的 id 变量,我仍然无法解决我的问题。
这是我的数据集:
V1 V2 V3 V4 V5
51 20 29 12 20
51 22 51 NA NA
51 14 NA NA NA
51 75 NA NA NA
我想把它融化成:
V1 variable value
51 V2 20
51 V3 29
51 V4 12
51 V5 20
51 V2 22
51 V3 51
51 V2 14
51 V2 75
目前我的方法是用 for 循环逐行融化它,然后将它们 rbind 在一起。
library(reshape)
df <- read.table(text = "V1 V2 V3 V4 V5 51 20 29 12 20 51 22 51 NA NA 51
+14 NA NA NA 51 75 NA NA NA", header = TRUE)
dfall<-NULL
for (i in 1:NROW(df))
{
dfmelt<-melt(df,id="V1",na.rm=TRUE)
dfall<-rbind(dfall,dfmelt)
}
只是想知道是否有任何方法可以更快地做到这一点?谢谢!
【问题讨论】:
-
查看 tidyr::gather 但没有融化达到您想要的效果?
-
@chinsoon12 不,melt 将逐列执行,即“值”列将是 20,22,14,75,29,51,12,20 而不是 20,29,12 ,20,22,51,14,75
-
我发布了一个解决方案。你可以检查一下。