R:具有特定因素水平的所有案例的平均值
R: mean of all cases with a certain factor level
我尝试使用此处 Mean by factor by level 中的代码,但它不起作用。这是我的情况。从航班数据集中,我想知道承运人 UA 所有飞机的平均航班延误。
library(nycflights13)
data(flights)
mean(flights$air_time[flights$carrier == "UA"])
但是结果只是
[1] NA
我做错了什么?
由于数据集中存在缺失值(NA
),您需要在mean
函数中指定参数na.rm = TRUE
。否则,如果至少有一个值为 NA
,则 mean
函数(以及其他函数,如 sum
、min
、max
、...)将 return NA
.
mean(flights$air_time[flights$carrier == "UA"], na.rm = TRUE)
# [1] 211.7914
如果您正在寻找 flights$carrier == "UA"
的 mean
时间,您可以使用 summarise
在 dplyr
中尝试解决方案
此解决方案通过 na.rm=TRUE
考虑缺失值
library(dplyr)
flights %>%
filter(carrier == "UA") %>%
summarise(., mean(air_time, na.rm=TRUE))
正如 Ric S 所说,使用 na.rm = TRUE
并记住,当 R 找到 NA 值时,函数会将其用作主要值,因此使用许多其他类似函数(例如中位数)可能会遇到类似问题、最大值、最小值等
我尝试使用此处 Mean by factor by level 中的代码,但它不起作用。这是我的情况。从航班数据集中,我想知道承运人 UA 所有飞机的平均航班延误。
library(nycflights13)
data(flights)
mean(flights$air_time[flights$carrier == "UA"])
但是结果只是
[1] NA
我做错了什么?
由于数据集中存在缺失值(NA
),您需要在mean
函数中指定参数na.rm = TRUE
。否则,如果至少有一个值为 NA
,则 mean
函数(以及其他函数,如 sum
、min
、max
、...)将 return NA
.
mean(flights$air_time[flights$carrier == "UA"], na.rm = TRUE)
# [1] 211.7914
如果您正在寻找 flights$carrier == "UA"
的 mean
时间,您可以使用 summarise
dplyr
中尝试解决方案
此解决方案通过 na.rm=TRUE
library(dplyr)
flights %>%
filter(carrier == "UA") %>%
summarise(., mean(air_time, na.rm=TRUE))
正如 Ric S 所说,使用 na.rm = TRUE
并记住,当 R 找到 NA 值时,函数会将其用作主要值,因此使用许多其他类似函数(例如中位数)可能会遇到类似问题、最大值、最小值等