R语言如何将数据框每行指定列元素除以该行对应分母列数值
R实现数据框指定列按行对应分母相除的方法
以下是两种常用的可直接运行的实现方案:
方案1:基础R实现(无需额外安装包)
利用R原生向量化运算特性,直接对指定列做批量除法:
# 构造示例数据(已有数据可跳过该部分) A <- c(4, 5, 10) B <- c(8, 45, 2) C <- c(7, 4, 0) D <- c(98, 32, 12) E <- c(1, 3, 11) df <- data.frame(A, B, C, D, E) df$particular_number<-c(22, 34, 23) # 核心计算逻辑 new_df <- df # 对A到E的前5列执行按行除以对应particular_number的操作 new_df[, 1:5] <- new_df[, 1:5] / new_df$particular_number
方案2:dplyr包实现(代码可读性更高,适配复杂场景)
如果已安装tidyverse系列工具,用mutate+across的组合实现逻辑更清晰,不需要手动数列下标:
library(dplyr) new_df <- df %>% # 指定A到E列,每个元素除以当前行的particular_number mutate(across(A:E, ~ .x / particular_number))
两种方案最终得到的new_df都是和原df维度完全一致的3行6列数据框,前5列存储计算后的比值,最后一列保留原始的分母数值。
内容的提问来源于stack exchange,提问作者zepmaya
相关产品推荐
相关产品推荐

