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

如何将R语言分组data.frame的words列合并为逗号分隔字符串?

合并分组字符串列的解决方案

你遇到的是R中很常见的分组合并字符串需求,之前尝试的方法没踩对点子,下面给你两种简单直接的可行方案:

Base R 实现方法

用aggregate函数时,不用list作为FUN,而是用paste并指定collapse = ", "参数,就能直接把每组的words合并成逗号分隔的字符串:

# 原始数据
df <- data.frame(first = c("a", "a", "b", "b", "b", "c"), words =c("about", "among", "blue", "but", "both", "cat"))

# 分组合并
df1 <- aggregate(words ~ first, data = df, FUN = function(x) paste(x, collapse = ", "))

运行后得到的结果完全符合你的预期:

first          words
1     a    about, among
2     b blue, but, both
3     c           cat

Tidyverse 实现方法

如果你习惯用tidyverse生态的语法,用dplyr的分组+汇总操作就能搞定:

library(dplyr)

df1 <- df %>%
  group_by(first) %>%
  summarise(words = paste(words, collapse = ", "), .groups = "drop")

这里的.groups = "drop"是用来取消分组状态,返回普通的data.frame;如果需要保留分组结构,可以去掉这个参数。

补充说明你之前的问题

  • 用aggregate(..., FUN = list)得到的是列表列,因为list会把每组的元素单独存为列表,而非合并成单个字符串;
  • group_rows()的作用是提取分组后的行集合,不是用来合并列内容的,所以达不到你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:19:31