R语言实现DataFrame多列按行依次相减生成新列的方法
R语言实现多列依次相减生成新列
基础R实现
直接使用apply()逐行处理指定列,按需求计算:
# 构造示例数据 df <- data.frame( Column_A = c("ex1", "ex2"), a = c(10, 15), b = c(5, 3), c = c(6, 4), d = c(7, 2) ) # 新增列e,计算逻辑为 a - b - c - d df$e <- apply(df[, c("a", "b", "c", "d")], 1, function(x) x[1] - sum(x[-1]))
tidyverse(dplyr)实现
用更直观的逐行计算语法:
library(dplyr) # 基于示例数据生成新列 df <- df %>% rowwise() %>% mutate(e = a - b - c - d) %>% ungroup()
另外补充:其实你尝试的rowSums()可以调整用法达成需求,数学上a - b - c - d等价于a - (b + c + d),所以也可以这样写:
df$e <- df$a - rowSums(df[, c("b", "c", "d")])
三种方法结果一致,可根据自己的代码习惯选择。
内容的提问来源于stack exchange,提问作者SingleCheesecake
相关产品推荐
相关产品推荐

