如何按列名而非列号计算rowMeans?附示例数据框bhs1
按列名计算rowMeans的解决方案
没问题!在R里按列名而非列号计算行均值非常直观,结合你的bhs1数据框(里面包含带NA值的列),我给你几种实用的方法:
方法1:手动指定目标列名
如果需要计算均值的列数量不多,可以直接列出列名向量来选中目标列,再计算行均值:
# 定义要计算均值的列名 target_columns <- c("bhs1_1", "bhs1_2", "bhs1_3", "bhs1_4", "bhs1_5") # 计算行均值并添加为新列(必须加na.rm=TRUE,否则NA会导致结果全为NA) bhs1$row_mean <- rowMeans(bhs1[target_columns], na.rm = TRUE)
方法2:匹配有规律的列名(更高效)
如果你的列名有统一前缀(比如都是bhs1_开头),可以用匹配规则自动选中列,不用手动逐个输入:
基础R版本
# 匹配所有以"bhs1_"开头的列名 target_columns <- grep("^bhs1_", names(bhs1), value = TRUE) # 计算行均值 bhs1$row_mean <- rowMeans(bhs1[target_columns], na.rm = TRUE)
tidyverse/dplyr版本
如果你习惯用dplyr的语法,也可以这样写:
library(dplyr) bhs1 <- bhs1 %>% mutate(row_mean = rowMeans(select(., starts_with("bhs1_")), na.rm = TRUE))
关键提醒:一定要加上na.rm = TRUE参数!因为你的数据里存在NA值,默认情况下rowMeans遇到NA会返回NA,加上这个参数会自动忽略NA值计算有效数值的均值。
内容的提问来源于stack exchange,提问作者Atanas Janackovski
相关产品推荐
相关产品推荐

