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

在R语言中如何对数据框行分组并合并项目编号?

在R语言中实现按分组合并字符串的几种方法

嗨,针对你提出的按Product分组并合并对应Project为逗号分隔字符串的需求,我给你整理了几种常用的实现方式,比你尝试的apply系列函数更适合这类数据框分组聚合场景:

方法一:使用Base R的aggregate函数

这是无需额外安装包的基础方法,直接用R内置的aggregate函数就能完成:

# 先构造你的数据集
Project <- c("1","2","3","4","5")
Product <- c("A","B","A","B","B")
data <- data.frame(Product, Project)

# 分组合并操作
result_base <- aggregate(Project ~ Product, data = data, FUN = paste, collapse = ",")
print(result_base)

输出结果:

Product Project
1       A     1,3
2       B   2,4,5

这里Project ~ Product表示按Product分组,对Project列应用聚合函数;FUN = paste指定用拼接函数,collapse = ","设置拼接的分隔符为逗号。

方法二:使用tidyverse工具集(dplyr + stringr)

如果你习惯用tidyverse的语法,这种方式更直观易读,需要先安装并加载相关包:

# 安装包(首次使用需执行)
# install.packages("tidyverse")

library(tidyverse)

result_tidy <- data %>%
  group_by(Product) %>%
  summarise(Project = str_c(Project, collapse = ","), .groups = "drop")
print(result_tidy)

这里group_by(Product)指定分组字段,summarise里用str_c(stringr包的拼接函数)来合并Project列,.groups = "drop"是为了取消分组状态,得到普通的数据框。

方法三:使用data.table包(高效处理大数据)

如果你的数据集很大,data.table的分组操作速度会更快,用法如下:

# 安装包(首次使用需执行)
# install.packages("data.table")

library(data.table)

# 转换为data.table格式
setDT(data)
result_dt <- data[, .(Project = paste(Project, collapse = ",")), by = Product]
print(result_dt)

by = Product指定分组字段,.()用来定义聚合后的列,同样用paste完成字符串拼接。

另外补充一下:你之前尝试的apply系列函数,更多是针对矩阵、数组或列表的逐元素/逐行/逐列操作,并不适合这种数据框的分组聚合场景,所以用上面这些方法会更合适~

内容的提问来源于stack exchange,提问作者Head and toes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:31:11