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

如何在R中按Protein分组统计Peptide唯一值数量并新增列?

解决按Protein分组统计唯一Peptide数量的问题

方法一:用dplyr包(推荐,语法清晰)

先加载dplyr包,按Protein分组后计算每组内的唯一Peptides数量,新增列到原数据框:

library(dplyr)

# 注意:原数据框的肽段列名是Peptides,和你预期输出里的Peptide是笔误,这里以原数据框列名为准
df <- df %>%
  group_by(Protein) %>%
  mutate(`Unique values` = n_distinct(Peptides)) %>%
  ungroup()
  • group_by(Protein):按Protein字段分组
  • n_distinct(Peptides):统计每组内不重复的Peptides数量
  • mutate:把统计结果作为新列添加到每一行,保证同一Protein的所有行都对应相同的统计值
  • ungroup():取消分组,还原普通数据框结构(可选,但能避免后续操作的分组干扰)

方法二:用Base R原生函数(无需额外包)

如果不想加载dplyr,用ave函数也能实现:

df$`Unique values` <- ave(df$Peptides, df$Protein, FUN = function(x) length(unique(x)))
  • ave函数会按第二个参数(df$Protein)分组,对第一个参数(df$Peptides)执行指定的统计函数
  • function(x) length(unique(x)):计算每组内不重复值的数量,结果自动匹配到原数据的每一行

原代码的问题

你写的for循环没有做分组筛选,每次赋值都是整个Peptides列的全局唯一值数量,而非当前Protein分组内的数量,所以最终整列都是同一个全局统计值,达不到分组统计的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:16:20