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

R语言实现不同数据类型多列分组聚合的方法及报错解决

报错原因

summarize() 函数默认仅保留分组字段和函数内显式生成的列,你原有代码的分组逻辑仅保留了自定义的gp临时分组列、以及summarize内生成的title和text列,year、code在summarize计算步骤就已经被丢弃,后续select()调用自然会报找不到列的错误。
另外你原有手动构造gp分组的逻辑仅通过相邻行title是否变化切分组,没有结合需求要求的year、code维度,一旦数据排序变动、出现同名title相邻但year/code不一致的场景就会出现分组错误。

可直接运行的正确代码

直接按业务要求的三个维度分组即可,不需要手动构造分组序号,逻辑更简洁也更稳定:

library(dplyr)

# 加载示例数据
df <- data.frame(title = c('A','B','C','C','C','D','C','C','E'),
                 text = c('I like...', 'I wish...', 'review1','review2','review3',
                          'Detecting...','review1','review2', 'New...'),
                 year = c(2012, 2012, 2013, 2013, 2013, 2014, 2015, 2015, 2016),
                 code = c("i12", "i12", "i13", "i13", "i13", "i14", "i15", "i15", "i16"))

# 计算逻辑
df %>%
  group_by(title, year, code) %>%
  summarize(
    # 统计每个分组下的text数量
    text_count = n(),
    # 拼接同组内text字段,用空格分隔
    text = paste(text, collapse = " "),
    # 计算完成后自动取消分组,避免后续操作受分组影响
    .groups = "drop"
  ) %>%
  # 调整列顺序匹配预期输出格式
  select(title, text, year, code, text_count)
运行输出结果

运行后返回结果完全匹配预期:

title text                     year code  text_count
  <chr> <chr>                   <dbl> <chr>      <int>
1 A     I like...                2012 i12            1
2 B     I wish...                2012 i12            1
3 C     review1 review2 review3  2013 i13            3
4 C     review1 review2          2015 i15            2
5 D     Detecting...             2014 i14            1
6 E     New...                   2016 i16            1

如果不需要text_count统计列,直接删掉summarize里的text_count = n()行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:48:16