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

如何正确使用dplyr的rowwise函数计算跨行均值?

问题解答

你原来代码出错的核心原因是:a1:a3在逐行运算的语境中,并不会自动选取a1、a2、a3三个列的当前行值,而是生成了从a1取值到a3取值的整数序列,对该序列求平均的结果自然和预期的行均值不符。

dplyr的rowwise()行分组模式下,需要搭配c_across()函数实现多列的行维度选取,正确写法如下:

library(dplyr)

set.seed(123)

mydf <- tibble(
  a1 = floor(rnorm(10, 5, 2)),
  a2 = floor(rnorm(10, 6, 3)),
  a3 = floor(rnorm(10, 8, 3))
)

# 正确写法1:指定列范围计算行均值
mydf %>%
  rowwise() %>%
  mutate(allmeanrow = mean(c_across(a1:a3))) %>%
  ungroup() # 计算完成后取消行分组,避免影响后续操作

# 正确写法2:对所有列计算行均值
mydf %>%
  rowwise() %>%
  mutate(allmeanrow = mean(c_across(everything()))) %>%
  ungroup()

上述两种写法的运行结果和你给出的rowMeans(.)预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:48:04