0
votes

Erreur lors de la tentative de calcul de la valeur moyenne, indiquant que l'objet n'existe pas

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

r

0 commentaires

3 Réponses :


1
votes

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.


0 commentaires

1
votes

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))


0 commentaires

1
votes

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))


0 commentaires