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

R语言按指定列合并重复行:字符串拼接、数值取均值

R语言实现按Proteins列合并重复行

针对需求,我们可以用dplyr包快速实现:按Proteins列分组,对不同数据类型的列分别做字符串拼接或数值取均值处理。

完整代码示例

# 安装并加载dplyr(若未安装)
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}

# 构造测试数据框
df <- tibble(
  Proteins = c("ProteinA", "ProteinA", "ProteinB", "ProteinC", "ProteinC"),
  Gene = c("GeneX", "GeneY", "GeneZ", "GeneX", "GeneX"),
  Expression = c(2.3, 4.5, 1.8, 3.1, 2.9),
  Location = c("Nucleus", "Cytoplasm", "Membrane", "Cytoplasm", "Nucleus")
)

# 分组合并逻辑
df_combined <- df %>%
  group_by(Proteins) %>%
  summarise(
    across(everything(), ~ {
      if (is.character(.x)) {
        # 字符型列:去重后用@拼接
        paste0(unique(.x), collapse = "@")
      } else if (is.numeric(.x)) {
        # 数值型列:计算均值(忽略缺失值)
        mean(.x, na.rm = TRUE)
      } else {
        # 其他类型(如因子、逻辑型)默认保留第一个值,可按需调整
        .x[1]
      }
    })
  ) %>%
  ungroup()

# 输出结果
print(df_combined)

代码说明

  • 分组:group_by(Proteins)将相同Protein的行归为一组
  • 列处理逻辑:
    • 字符型列:用paste0(unique(.x), collapse = "@")实现拼接,unique()避免同一组内重复值重复拼接,不需要去重可直接去掉该函数
    • 数值型列:mean(.x, na.rm = TRUE)计算均值,na.rm = TRUE确保缺失值不影响计算
    • 其他数据类型:默认保留组内第一个值,可根据实际需求修改(比如因子类型可转为字符型再拼接)

测试结果

运行代码后,输出的合并后数据框如下:

# A tibble: 3 × 4
  Proteins Gene       Expression Location          
  <chr>    <chr>           <dbl> <chr>             
1 ProteinA GeneX@GeneY       3.4 Nucleus@Cytoplasm 
2 ProteinB GeneZ             1.8 Membrane          
3 ProteinC GeneX             3   Cytoplasm@Nucleus

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:43:13