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

R语言如何将相同分组下的字符型列合并至单个单元格?

合并DataFrame中同组的字符型数据

需求说明

将包含重复name的DataFrame处理为name唯一,对应gene列合并为以逗号加空格分隔的字符串。

示例数据构造

先还原你的输入数据:

df <- data.frame(
  name = c("GO:00001", "GO:00001", "GO:00002", "GO:00002", "GO:00002"),
  gene = c("Gene_1", "Gene_2", "Gene_3", "Gene_4", "Gene_5"),
  stringsAsFactors = FALSE  # 强制字符型,避免因子干扰
)

解决方案

方法1:使用dplyr + stringr(tidyverse生态)

这是最贴合你提到的summarize用法的方案:

library(dplyr)
library(stringr)

# 分组后合并字符串
result_df <- df %>%
  group_by(name) %>%
  summarize(gene = str_c(gene, collapse = ", ")) %>%
  ungroup()

方法2:Base R 原生实现

无需额外安装包,用aggregate函数直接处理:

result_df <- aggregate(gene ~ name, data = df, FUN = function(x) paste(x, collapse = ", "))

输出结果

运行后得到的result_df结构如下:

namegene
GO:00001Gene_1, Gene_2
GO:00002Gene_3, Gene_4, Gene_5

补充说明

  • melt是用于宽表转长表的函数,不适合当前需求;
  • 核心逻辑是按name分组后,对每组的gene列执行字符串拼接操作,通过collapse参数指定拼接分隔符即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:05:42