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

R语言:为DataFrame添加多列均值列的更简洁实现方法问询

简化R中计算多列均值并添加新列的方法

嘿,你的需求其实可以用更清爽的方式实现,不用绕那么多bind_cols的步骤!下面给你几种简洁的方案:

方法1:dplyr的mutate直接结合rowMeans

这是最直接的简化版,直接在原数据框里生成新列,省去中间的绑定操作:

library(dplyr)
narrow_ds <- narrow_ds %>%
  mutate(eng = rowMeans(select(., starts_with("eng")), na.rm = TRUE))

这里select(., starts_with("eng"))直接选中所有以eng开头的列,传给rowMeans计算行均值,na.rm=TRUE直接作为参数传入,一步到位。

方法2:tidyverse的rowwise + c_across

如果更习惯tidyverse的逐行操作语法,这个方案可读性拉满:

library(dplyr)
narrow_ds <- narrow_ds %>%
  rowwise() %>%
  mutate(eng = mean(c_across(starts_with("eng")), na.rm = TRUE)) %>%
  ungroup()

rowwise()让后续操作按行执行,c_across()可以选中指定范围的列,然后用mean()计算均值,最后记得ungroup()恢复数据框的默认分组状态。

方法3:Base R实现(无需加载dplyr)

如果不想依赖dplyr,用Base R也能轻松搞定:

narrow_ds$eng <- rowMeans(narrow_ds[, startsWith(names(narrow_ds), "eng")], na.rm = TRUE)

startsWith(names(narrow_ds), "eng")筛选出列名以eng开头的列,然后用rowMeans计算行均值,直接赋值给新列eng。

这些方法都比你原来的代码简洁很多,而且都保留了na.rm=TRUE的缺失值处理,完美解决你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:32:05