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

R dplyr实现按id分组拼接number列并根据分组长度适配分隔符

解决方案

你可以先自定义一个符合拼接规则的辅助函数,再配合dplyr的分组操作即可实现需求,完整代码如下:

library(tidyverse)

# 自定义符合分隔规则的拼接函数
knit_numbers <- function(x) {
  n <- length(x)
  if (n == 1) {
    return(x)
  } else if (n == 2) {
    return(paste(x, collapse = " and "))
  } else {
    return(paste0(paste(x[-n], collapse = ", "), " and ", x[n]))
  }
}

# 分组后生成numbers列
result <- names %>%
  group_by(id) %>%
  mutate(numbers = knit_numbers(number)) %>%
  ungroup()

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

逻辑说明

  • 自定义的knit_numbers函数会根据输入向量的长度自动选择分隔符,完全匹配要求的三种拼接规则
  • 按id分组后调用该函数,会把对应id下的所有number值传入函数计算,同一个分组下所有行的numbers结果完全相同,不会只拼接当前行的值
  • 不需要额外安装其他扩展包,仅依赖dplyr的基础分组和修改列功能即可实现。

内容的提问来源于stack exchange,提问作者R.W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:45:06