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 函数(以及其他函数,如 summinmax、...)将 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 值时,函数会将其用作主要值,因此使用许多其他类似函数(例如中位数)可能会遇到类似问题、最大值、最小值等