如何从数据框中的两列以上计算总体平均值?
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)
我想从数据框中选定的列中获得一个平均值,但它不适用于两列。我试过这个:
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)