如何在R中实现列内所有值减去该列第20行的值?
R实现每列减去该列第20行值的两种方法
方法一:基础R的lapply()
遍历数据框的每一列,对每列所有元素减去该列第20行的对应值,最后将结果转回数据框:
data_wide_adjusted <- as.data.frame(lapply(data_wide, function(col) { col - col[20] }))
方法二:tidyverse/dplyr
使用dplyr的across()函数批量处理列,支持筛选数值列避免非数值列报错:
library(dplyr) # 处理所有列(假设数据框全为数值型) data_wide_adjusted <- data_wide %>% mutate(across(everything(), ~ .x - .x[20])) # 若存在非数值列,仅处理数值列 data_wide_adjusted <- data_wide %>% mutate(across(where(is.numeric), ~ .x - .x[20]))
内容的提问来源于stack exchange,提问作者strangecharm
相关产品推荐
相关产品推荐

