【发布时间】:2019-07-04 19:34:05
【问题描述】:
我想计算数据框中多列的汇总变量。这在输入所有行名时是可能的,但我想使用starts_with() 和类似的函数。即
df <- data.frame(A1 = rnorm(100, 0, 1),
A2 = rnorm(100, 0, 1),
A3 = rnorm(100, 0, 1),
B1 = rnorm(100, 0, 1),
B2 = rnorm(100, 0, 1))
什么有效:
library(tidyverse)
df %>% mutate(A = (A1 + A2 + A3)/3)
df %>% mutate(A = rowMeans(select(., A1:A3)))
但是,前者在汇总许多变量时会变得烦人,而后者在汇总许多行时会非常缓慢。我怀疑一定有更快的解决方案。
什么不起作用:
df %>% mutate(A = mean(A1:A3))
df %>% group_by(row_number()) %>% mutate(A = mean(A1:A3))
df %>% group_by(row_number()) %>% mutate(A = mean(starts_with("A")))
所以我的问题是:有没有办法在 mutate() 中使用 mean() 等来计算行均值,理想情况下不必拼出每个变量?
【问题讨论】: