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

R语言获取单列唯一值并合并对应另一列行内容的实现方法

错误原因拆解
  • 第一种写法逻辑本身正确,唯一问题是你将汇总后的列命名为vlist,和你期望的source列名不符,调整列名即可得到目标结果。
  • 第二种写法逻辑不成立:distinct(id)默认仅保留id列,执行后数据框已经没有source字段,后续拼接操作无法找到对应列;即使添加.keep_all = TRUE参数保留所有列,也只会保留每个id对应的第一条source记录,无法实现同id下所有source值的合并。
正确实现代码

tidyverse 版本(基于你的第一种写法修正)

library(dplyr)
df2 <- df %>%
  group_by(id) %>%
  summarise(source = paste0(source, collapse = ","))

运行后输出结果和你预期完全一致:

> df2
# A tibble: 2 × 2
     id source
  <dbl> <chr> 
1     1 x,z   
2     3 y   

基础R 版本

无需加载第三方包也可以实现:

df2 <- aggregate(source ~ id, df, function(x) paste0(x, collapse = ","))
扩展说明

如果同一个id下存在重复的source值,想要先去重再合并,可以调整代码为:

df %>%
  group_by(id) %>%
  summarise(source = paste0(unique(source), collapse = ","))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:39:04