【发布时间】:2015-07-30 12:58:42
【问题描述】:
给定一个数据框,除最后一列外,所有列中都包含数值,我如何计算整个行的平均值?
在此示例中,我使用了所有列,包括我想省略的 name 列。
df <- as.data.frame(matrix(1:40, ncol=10)) %>%
mutate(name=LETTERS[1:4]) %>%
mutate(mean=rowMeans(.))
所需的数据帧输出:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 mean name
1 1 5 9 13 17 21 25 29 33 37 19 A
2 2 6 10 14 18 22 26 30 34 38 20 B
3 3 7 11 15 19 23 27 31 35 39 21 C
4 4 8 12 16 20 24 28 32 36 40 22 D
【问题讨论】:
-
我可能会使用
apply(即apply(df[, 1:10], 1, mean)) -
生活中并不是所有的事情都与
dplyr相关,只要做df$Mean <- rowMeans(df[-ncol(df)])就可以了。虽然如果你坚持,我认为惯用的方式类似于df %>% select(-ncol(df)) %>% mutate(Mean = rowMeans(.)) -
@DavidArenburg 我真的认为这两个都是可行的答案。您应该将您的评论转换为答案。
-
@DavidArenburg 您的
dplyrsuggestion 将从最终结果中删除name,并且与OP 所需的输出不匹配。 -
@StevenBeaupré 是的,我后来看到了,但无法编辑。您的方法可能是惯用的方法,除了我发现在数据集上计算
rowMeans的方式太多