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

R语言中如何将dataframe每行元素除以指定列值实现标准化

R语言按指定行元素对整行做标准化的实现方案

首先构造示例数据方便测试:

df <- data.frame(
  Gene = c("A1", "A2", "A3"),
  P1 = c(6, 12, 8),
  P2 = c(8, 6, 4),
  P3 = c(2, 3, 8)
)

方法1:基础R实现(无需加载第三方包)

直接利用R的向量化运算特性,无需写循环,执行效率高:

# 指定作为除数的列
div_col <- "P3"
# 选择需要做标准化的数值列
num_cols <- c("P1", "P2", "P3")
# 按行做除法运算
df[num_cols] <- df[num_cols] / df[[div_col]]

如果需要自动识别所有数值列,不用手动指定,可以替换num_cols的定义:

num_cols <- sapply(df, is.numeric)

方法2:dplyr实现(适配tidyverse语法)

适合已经在使用tidyverse生态的代码场景,语法更直观:

library(dplyr)

df <- df %>%
  # 对选中的数值列统一执行:每个元素除以同行的P3值
  mutate(across(c(P1, P2, P3), ~ .x / P3))

运算后得到的结果如下:

Gene P1  P2 P3
1   A1  3 4.0  1
2   A2  4 2.0  1
3   A3  1 0.5  1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 21:36:07