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

时间:2015-11-12 15:49:25

标签: r dataframe mean na

我希望在数据框中从我选择的列中获得单个均值,但它不能从两列中运行。我试过这个:

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
  警告信息:
  在mean.default(testDF [,2:3],na.rm = T)中:
  参数不是数字或逻辑:返回NA

如果我使用sum()功能,它可以很好地工作,但我不明白为什么它不适用于mean()功能。在执行了一些步骤之后,我使用melt()包中的reshape2{}函数完成了它,但我看起来很简单,因为我有很多变量和数据。

此致

1 个答案:

答案 0 :(得分:3)

mean的帮助说:

  

目前有数字/逻辑向量和日期,日期时间和时间间隔对象的方法。

这让我觉得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)