R: среднее значение всех случаев с определенным уровнем фактора - PullRequest
1 голос
/ 19 июня 2020

Я пробую код отсюда Среднее по уровню , но он не работает. Вот моя ситуация. Из набора данных о рейсах я хочу узнать среднюю задержку рейсов всех самолетов от перевозчика UA.

library(nycflights13)
data(flights)
mean(flights$air_time[flights$carrier == "UA"])

Но какие результаты только

[1] NA

Что я сделал не так?

Ответы [ 3 ]

1 голос
/ 19 июня 2020

Если вы ищете время mean для flights$carrier == "UA", вы можете попробовать решение в dplyr, используя summarise

Это решение учитывает отсутствующие значения с помощью na.rm=TRUE

library(dplyr)
flights %>% 
  filter(carrier == "UA") %>%
  summarise(., mean(air_time, na.rm=TRUE))
1 голос
/ 19 июня 2020

Как говорит Ri c S, используйте na.rm = TRUE и имейте в виду, что когда R находит значения NA, функции будут использовать его в качестве основного значения, поэтому у вас могут возникнуть аналогичные проблемы с использованием многих других подобных функций, таких как медиана, макс, мин, эт c.

1 голос
/ 19 июня 2020

Поскольку в наборе данных отсутствуют значения (NA), вам необходимо указать аргумент na.rm = TRUE в функции mean. В противном случае, если хотя бы одно значение - NA, функция mean (а также другие функции, такие как sum, min, max, ...) вернет NA.

mean(flights$air_time[flights$carrier == "UA"], na.rm = TRUE)
# [1] 211.7914
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...