按ID查找重复项并重新构建R中的数据集

时间:2018-02-01 21:28:54

标签: r group-by

我有一个包含列的数据集:idnames。可以有一个id但多个names,因此我有时会重复id-rows

id   names

id1 name1 
id1 name2 
id1 name3
id2 name4
id2 name5 

我需要在data.frame重构这样的R,以便所有行都有唯一的ids,如果有多个names,则所有行都应该被写入以逗号分隔的值进入names列,如下所示:

id   names
id1  name1, name2, name3
id2  name4, name5

我试过了grouped <- table %>% group_by(names),但它没有用。

我怎样才能在R中实现这一目标?

1 个答案:

答案 0 :(得分:3)

使用data.table

 df <- read.table(header=T, text="id   names

                             id1 name1 
                             id1 name2 
                             id1 name3
                             id2 name4
                             id2 name5")

    library(data.table)
    setDT(df)
    df[, names := as.character(names)]
    df[, names := paste0(names, collapse = ", "), by = id]
    df <- unique(df)

输出:

df
    id               names
1: id1 name1, name2, name3
2: id2        name4, name5