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

R/tidyverse中按多列分组实现条件字符串拼接的方法

解决方案

你之前的代码错误原因是group_by()仅传入了chapter一个分组字段,聚合时会忽略book的取值差异,把不同书卷下同编号的章节内容错误合并。只需要把两个分组维度同时传入分组函数即可,配合你正在使用的tidyverse生态工具(dplyr是tidyverse核心数据处理包,和tidyr完全兼容),实现代码如下:

library(dplyr)

# 基础聚合版本
df_agg <- df %>%
  group_by(book, chapter) %>%
  summarise(
    text = paste(text, collapse = " "),
    .groups = "drop"
  )

补充说明

  • 如果你的原始数据存在经文行顺序错乱的情况,可以先按verse字段排序后再聚合,保证拼接后的文本和经文编号顺序一致:
df_agg <- df %>%
  # 按书卷、章节、经文序号排序,保证拼接顺序正确
  arrange(book, chapter, verse) %>%
  group_by(book, chapter) %>%
  summarise(
    text = paste(text, collapse = " "),
    .groups = "drop"
  )
  • paste()函数的collapse参数可以自定义拼接间隔:如果需要用逗号加空格分隔文本,把参数值改成", "即可。
  • 代码中.groups = "drop"参数的作用是聚合完成后自动移除数据的分组属性,避免后续数据处理操作受残留分组逻辑干扰。

运行上述代码后得到的输出和你给出的预期结果完全一致:

bookchaptertext
11string1 string2
12string3 string4
21string5 string6
22string7 string8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:30:47