在R中尝试计算包含NA的列的平均值时出错

时间:2016-05-29 17:52:21

标签: r mean na.rm

从在线搜索和在此群组中,似乎这应该有效:

> mean(r_lab$ozone, na.rm=TRUE)

然而,我得到的是:

[1] NA
Warning message:
In mean.default(r_lab$ozone, na.rm = TRUE) :
  argument is not numeric or logical: returning NA

这是数据集中该列的内容:

> r_lab$Ozone
 [1]  41  36  12  18  NA  28  23  19   8  NA   7  16  11  14
[15]  18  14  34   6  30  11   1  11   4  32  NA  NA  NA  23

我有点心慌。

2 个答案:

答案 0 :(得分:4)

您的数据最有可能属于character类,而不是数字。

看看这些例子:

# Set up some numeric data
x <- c(41, 36, 12, 18, NA, 28, 23, 19,  8, NA,  7, 16, 11, 14, 18, 14, 34,  6, 30, 11,  1, 11,  4, 32, NA, NA, NA, 23)

# Clearly taking the mean on this will work
 mean(x, na.rm = TRUE)

[1] 18.13043

但是,如果您的数据属于character类,则会收到您报告的错误消息:

y <- as.character(x)
mean(y, na.rm = TRUE)

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

因此,您应首先将数据转换为数字,然后取平均值:

mean(as.numeric(x), na.rm = TRUE)

[1] 18.13043

答案 1 :(得分:0)

我不知道R是区分大小写的。

理查德是对的,我本应该使用臭氧,而不是臭氧。感谢大家的帮助。

抱歉,我不知道如何提供可重现的数据。在这种情况下本来可以做什么?