【发布时间】:2021-06-23 09:20:07
【问题描述】:
有没有办法从数据框中计算一行的平均值?
例如:
df <- data.frame(X = c(1,1,1,1,2,2), Y = c(1,4,4,4,4,3), Z = c(2,5,6,8,3,1))
df
X Y Z
1 1 1 2
2 1 4 5
3 1 4 6
4 1 4 8
5 2 4 3
6 2 3 1
那么如何计算每行的平均值?
mean(df[,1:3])
我真的不明白为什么这不起作用,我的意思是相同的代码适用于例如 min() 或 max() 但不适用于 mean()。
min(df[,1:3])
[1] 1
【问题讨论】:
-
rowMeans(df[,1:3])或apply(df[,1:3],1, mean) -
好的,谢谢,这行得通。但是 mean() 的行为与 min() 或 max() 不同的原因是什么
-
你错了,最小值或最大值都不能正常工作,它们应该只返回单个值,但你的要求是按行返回,你需要使用 pmin 或 pmax 来获得逐行值.阅读更多关于 R 中的向量化函数 mean/sum/min/max ,所有这些都将返回单个值,除非应用一些函数或循环。