从具有唯一ID

时间:2017-11-14 16:07:25

标签: r

我有一个具有唯一ID的数据框和其他列,如下所示:

df = data.frame(id = c('id1', 'id2', 'id3'), 
                col_1 = c(0,1,0), 
                col_2 = c(1,0,0), 
                col_3 = c(1,1,NA), 
                col_4 = c(1,NA,NA))

如何融合数据框,目的是让2列一个具有id,将根据列数重复,第二列将包含其他列的值。

预期产出的例子:

df = data.frame(id = c('id1', 'id1', 'id1', 'id1', 'id2', 'id2', 'id2', 'id2', 'id3', 'id3', 'id3', 'id3'), 
                col_1 = c(0,1,1,1,1,0,1,NA,0,0,NA,NA))

1 个答案:

答案 0 :(得分:1)

尝试:

library(reshape2)
df = data.frame(id=c('id1', 'id2', 'id3'),col_1 = c(0,1,0),col_2 = c(1,0,0),col_3 = c(1,1,NA),col_4 = c(1,NA,NA))
x <- melt(df, id.vars = "id")
x[order(x$id),c(1,3)]