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

R语言如何按多列等值合并dataframe行 分隔符拼接同组值

R按指定列分组合并行、拼接同列多值实现方案

核心逻辑是先按var1、var2、var3三列分组,再对其余列的非空值做拼接聚合,以下是两种可直接运行的实现方式。

方法1:dplyr实现(代码简洁,推荐)

适合日常使用tidyverse生态做数据处理的场景:

# 首次使用先执行安装命令
# install.packages("dplyr")
library(dplyr)

merged_df <- df %>%
  group_by(var1, var2, var3) %>%
  summarise(
    # 对所有非分组列,先剔除NA值再用分号拼接
    across(everything(), ~paste(na.omit(.x), collapse = ";")),
    .groups = "drop"
  )

代码说明:

  • group_by传入的三个字段即为行合并的匹配键,只有这三列取值完全一致的行才会被合并
  • na.omit(.x)用于过滤每列中的空值,避免拼接结果中出现无意义的NA文本
  • collapse参数后的分号是多值之间的连接符,可以根据需要替换为逗号、顿号等任意字符
  • .groups = "drop"用于移除聚合后的分组属性,返回普通dataframe结构

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

var1var2var3var4var5
1635Aa28appletree
1729Bb85orange
1847Cc27pearground;desk

方法2:基础R实现(无需安装第三方包)

如果不想额外安装依赖,可以直接用R自带函数实现:

merged_df <- aggregate(
  x = df[, c("var4", "var5")],
  by = list(var1 = df$var1, var2 = df$var2, var3 = df$var3),
  FUN = function(col) paste(na.omit(col), collapse = ";")
)

两种方法输出结果完全相同。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:03:32