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

在R语言中基于另一列重复值合并行的实现方法

解决方案

这里提供几种在R中实现需求的常用方法,核心逻辑是按A列分组,将每组对应的B列值用分号;拼接为新列C:

方法1:Base R(无需额外包)

利用aggregate函数完成分组聚合:

# 构造原始数据
A <- c("A", "A123", "A123", "B123", "B123", "B")
B <- c("NA", "as", "bp", "df", "kl", "c")
df <- data.frame(A, B, stringsAsFactors = FALSE)

# 分组拼接并重命名列
df2 <- aggregate(B ~ A, data = df, FUN = function(x) paste(x, collapse = ";"))
colnames(df2) <- c("A", "C")

方法2:tidyverse(dplyr)

适合熟悉tidyverse生态的用户,代码可读性强:

library(dplyr)

df2 <- df %>%
  group_by(A) %>%
  summarise(C = paste(B, collapse = ";"), .groups = "drop")
  • group_by(A):按A列分组
  • summarise:对每组的B列执行拼接操作
  • .groups = "drop":取消分组状态,返回普通数据框

方法3:data.table(适合大数据量)

如果处理的数据集较大,data.table的效率更高:

library(data.table)

# 转换为data.table格式
setDT(df)
# 分组拼接
df2 <- df[, .(C = paste(B, collapse = ";")), by = A]

以上三种方法最终生成的df2均符合需求:

> df2
      A      C
1     A     NA
2  A123 as;bp
3  B123 df;kl
4     B      c

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:48:24