Je veux savoir quel est le temps d'antenne moyen depuis les origines (EWR, JFK et LGA) dans nycflights, mais j'obtiens un message d'erreur indiquant que l'objet n'existe pas.
flights %>% select(mean(air_time)) Error: object 'air_time' not found Run `rlang::last_error()` to see where the error occurred.
Maintenant, essayer de calculer la moyenne comme ci-dessous, me donne une erreur
library(tidyverse) library(nycflights13) flights %>% select(air_time) (doing this shows that the column exists and with values)
Essayer d'exécuter: rlang :: last_error () c'est juste affiche une trace déroutante et indique que le air_time n'existe pas, même s'il existe.
Au début, j'ai pensé que c'était peut-être parce que le air_time était de type dbl (double), et que je ne pouvais pas exécuter mean (..) sur un double, mais essayer mean (1: 10.4) donne 5,5, donc ce n'est pas le cas. Toute aide est la bienvenue
3 Réponses :
Je ne suis pas un expert de tidyverse, mais d'après ce que je vois, le problème se produit dans l'instruction select. Essayez peut-être quelque chose pour sélectionner d'abord et exécuter après la sélection. Dans ce code, il me semble que vous essayez de sélectionner le moyen de quelque chose. Si j'utilise une base R telle que
A = flights$air_time mean(A, na.rm = T)
j'obtiens un résultat.
Je pense que vous n'utilisez pas correctement dplyr. Vous ne pouvez pas utiliser select (mean (air_time)) car vous essayez littéralement de sélectionner une colonne moyenne. Voici ce que vous voulez faire:
flights %>% summarise(mean_air_time = mean(air_time, na.rm=TRUE))
La fonction select choisira les variables de votre bloc de données. Vous pouvez sélectionner air_time (un nom de colonne dans votre bloc de données) mais pas mean (air_time) .
Au lieu de cela, si vous voulez les temps moyens pour chacune des origines, vous pouvez d'abord group_by origin , puis résumer pour obtenir le signifie pour chacun. Notez que certains ont des données manquantes (NA), vous devrez les supprimer pour obtenir une moyenne numérique au lieu de NA.
# A tibble: 3 x 2 origin mean_time <chr> <dbl> 1 EWR 153. 2 JFK 178. 3 LGA 118.
Sortie
flights %>% group_by(origin) %>% summarise(mean_time = mean(air_time, na.rm = TRUE))