如何从数据框中的两列以上计算总体平均值?

How to calculate an overall mean from more than two columns in a data frame?

我想从数据框中选定的列中获得一个平均值,但它不适用于两列。我试过这个:

testDF <- data.frame(v1 = c(1,3,15,7,18,3,5,NA,4,5,7,9),
                     v2 = c(11,33,55,7,88,33,55,NA,44,5,67,99),
                     v3 = c(NA,33,5,77,88,3,55,NA,4,55,87,14))

mean(testDF[,2:3], na.rm=T)

我收到这条警告消息:

mean(testDF[,2:3], na.rm=T)
[1] NA
Warning message:
In mean.default(testDF[, 2:3], na.rm = T) :
argument is not numeric or logical: returning NA

如果我使用 sum() 函数,它工作得很好,但我不明白为什么它不能与 mean() 函数一起工作。经过一些步骤后,我使用 reshape2{} 包中的 melt() 函数完成了它,但我正在寻找一种简单的方法来完成它,因为我有很多变量和数据。

此致

mean 的帮助说:

Currently there are methods for numeric/logical vectors and date, date-time and time interval objects.

这让我觉得 mean 不适用于数据帧。

确实,您会发现执行 mean(testDF) 会导致相同的错误,但 mean(testDF[,1]) 有效。

最简单的解决方案是:

mean(as.matrix(testDF[,2:3]), na.rm=T)

此外,您可以使用 colMeans 来获取每列的平均值。

确实,如果您查看 colMeans 的源代码,第一行是:

if (is.data.frame(x)) 
    x <- as.matrix(x)