在 R 中尝试计算包含 NA 的列的平均值时出错
Getting error in R trying to calculate mean on column that contains NA
从网上和本组中搜索,这似乎是可行的:
> 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
我有点慌张。
您的数据很可能是 class 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
但是,如果您的数据是 class 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
我不知道 R 区分大小写。
Richard 是对的,我应该一直使用 Ozone,而不是臭氧。感谢大家的帮助。
抱歉,我不知道如何提供可重现的数据。在这种情况下,什么就足够了?
从网上和本组中搜索,这似乎是可行的:
> 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
我有点慌张。
您的数据很可能是 class 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
但是,如果您的数据是 class 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
我不知道 R 区分大小写。
Richard 是对的,我应该一直使用 Ozone,而不是臭氧。感谢大家的帮助。
抱歉,我不知道如何提供可重现的数据。在这种情况下,什么就足够了?