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

基于Project分组对n列值归一化至100%的R语言技术问题

解决按Project分组将n列归一化为比例的问题

你当前使用的scale()函数是做标准化处理(将数据转换为均值为0、标准差为1的分布),这和你需要的「将每组内的n值转换为占组内总和的比例(总和为100%)」需求不符。

正确的dplyr实现代码

由于你的数据框ex当前是按Project和reaction双重分组的(从dput结果的groups字段可见),需要先重新按Project单独分组,再计算每个n值的占比:

library(dplyr)

# 重新按Project分组,计算归一化比例
perc <- ex %>%
  ungroup() %>%  # 取消原有双重分组
  group_by(Project) %>%
  mutate(norm = n / sum(n)) %>%  # 计算每组内n的占比
  select(Project, reaction, norm)  # 保留需要的列

验证结果

以你给出的示例数据为例:

  • Ga0598239组的n总和为3275,其中arsenate-reduction的n值为103,计算得103/3275 ≈ 0.0314,和你预期的0.0312(四舍五入差异)一致;
  • carbon-fixation的n值为11,计算得11/3275 ≈ 0.00336,和预期的0.0033一致。

运行代码后,perc数据框会包含你需要的Project、reaction和norm列,所有组内的norm值总和为1(即100%)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:10:01