首页 > 解决方案 > 查找数据框中某些列重复的行,然后合并其他列中的元素

问题描述

我有一个数据框,我想找到 A 列和 B 列都重复的行,然后通过将 C 列中的元素组合在一起来组合这些行。

我的例子:

 DF = cbind.data.frame(A = c(1, 1, 2, 3, 3), 
                       B = c("a", "b", "a", "c", "c"), 
                       C = c("M", "N", "X", "M", "N"))

我的预期结果:

 DFE = cbind.data.frame(A = c(1, 1, 2, 3), 
                        B = c("a", "b", "a", "c"), 
                        C = c("M", "N", "X", "M; N"))

非常感谢

标签: rdataframe

解决方案


无包:

DF <- aggregate(C ~ A + B, FUN = function(x) paste(x, collapse = "; "), data = DF)

输出:

  A B    C
1 1 a    M
2 2 a    X
3 1 b    N
4 3 c M; N

或与data.table

setDT(DF)[, .(C = paste(C, collapse = "; ")), by = .(A, B)]

推荐阅读