You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何找出DataFrame中A、B列重复的行并合并C列元素?

解决按多列分组合并另一列的问题

我来帮你搞定这个数据处理需求,这在日常数据清洗里是非常常见的场景——按A、B两列的唯一组合分组,把每组对应的C列内容合并起来。下面给你两种常用的实现方式,按需选择:

1. 使用tidyverse/dplyr(推荐,代码更直观)

先构造你的示例数据:

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"))

然后用dplyr的分组+汇总操作完成需求:

library(dplyr)

DFE <- DF %>%
  # 按A和B列分组,把A、B值完全相同的行归为一组
  group_by(A, B) %>%
  # 把每组的C列元素用"; "拼接起来
  summarize(C = paste(C, collapse = "; "),
            # 取消分组状态,避免后续操作的分组警告
            .groups = "drop")

运行后得到的结果和你期望的完全一致:

> DFE
# A tibble: 4 × 3
      A B     C    
  <dbl> <chr> <chr>
1     1 a     M    
2     1 b     N    
3     2 a     X    
4     3 c     M; N

2. 使用Base R(无需加载额外包)

如果你不想加载第三方包,用base R的aggregate函数也能实现:

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

这个方法的核心逻辑和上面一样:通过C ~ A + B指定分组依据是A和B,然后用自定义的FUN把每组的C列拼接起来。


内容的提问来源于stack exchange,提问作者Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:26:25