Ошибка при попытке вычислить среднее значение, говоря, что объект не существует - PullRequest
0 голосов
/ 19 марта 2020

Я хочу выяснить, что среднее значение air_time происходит от источников (EWR, JFK и LGA) в nycflights, но я получаю сообщение о том, что объект не существует.

library(tidyverse)
library(nycflights13)

flights %>% select(air_time)     (doing this shows that the column exists and with values)

Теперь попытка вычислить среднее значение, как показано ниже, выдает ошибку

flights %>% select(mean(air_time))
Error: object 'air_time' not found
Run `rlang::last_error()` to see where the error occurred.

Попытка выполнить: rlang::last_error() он просто печатает сбивающий с толку след и говорит, что air_time не существует, даже если он делает.

Сначала я подумал, может быть, это из-за того, что air_time имеет тип dbl (double), и что я не смог запустить mean(..) на дубле, но попытка mean(1:10.4) дает 5.5, так что это не дело. Любая помощь приветствуется

Ответы [ 3 ]

1 голос
/ 19 марта 2020

Я думаю, что вы не используете dplyr правильно. Вы не можете использовать select(mean(air_time)), потому что вы буквально пытаетесь выбрать средний столбец. Что вы хотите сделать, это следующее:

flights %>% summarise(mean_air_time = mean(air_time, na.rm=TRUE))
1 голос
/ 19 марта 2020

Функция select выберет переменные из вашего фрейма данных. Вы можете select air_time (имя столбца в вашем фрейме данных), но не mean(air_time).

Вместо этого, если вам нужно среднее время для каждого источника, вы можете сначала group_by origin, а затем summarise, чтобы получить средства для каждого. Обратите внимание, поскольку в некоторых из них отсутствуют данные (NA), вам нужно удалить их, чтобы получить среднее значение вместо чисел c вместо NA.

flights %>%
  group_by(origin) %>%
  summarise(mean_time = mean(air_time, na.rm = TRUE))

Вывод

# A tibble: 3 x 2
  origin mean_time
  <chr>      <dbl>
1 EWR         153.
2 JFK         178.
3 LGA         118.
1 голос
/ 19 марта 2020

Я не эксперт по tidyverse, но, насколько я понимаю, проблема возникает в операторе select. Может быть, попробуйте что-то выбрать сначала и запустить среднее после выбора. В этом коде, как мне кажется, вы пытаетесь выбрать что-то среднее. Если я использую базу R, такую ​​как

A = flights$air_time
mean(A, na.rm = T)

, я получаю результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...