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

R语言使用dplyr分组汇总字符列为列表向量的解决方法

你需要用list()将同组的字符向量封装为列表元素,才能在summarise()返回的单行中存储多元素的字符组。

修改后的实现代码

library(dplyr)
df <- data.frame(a = c("a","a","a","b","b","b"), c = c("d","d","d","d","e","e"))

df.new <- df %>%
  group_by(a) %>%
  summarise(new_strs = list(c)) 

相关说明

  1. 原代码问题:你之前的写法summarise(new_strs = c(c)) 会直接返回每组长度为3的字符向量,summarise()默认会把长度大于1的返回值拆分为多行,因此得到了6行的展开结果。套上list()后,每组的所有字符元素会被打包为一个列表元素,对应分组后的单行结果,完全符合你的预期输出。
  2. paste方案的问题:你提到的paste(x, collapse = ",") 是将所有字符元素拼接为一个长度为1的字符串,无法得到多元素的字符组,因此不符合需求。要在数据框的单个单元格中存储多元素的向量,必须使用列表类型的列。
  3. 后续去重优化:如果你需要直接得到分组后的唯一字符值,可以直接在汇总阶段处理,无需先合并全量元素再去重:
# 直接生成去重后的字符列表列
df.unique <- df %>%
  group_by(a) %>%
  summarise(unique_strs = list(unique(c)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:18:03