J'essaie d'obtenir un sous-ensemble d'une plus grande trame de données Films et je voulais sélectionner tous les films avec des États-Unis et avec une année entre 2 dates.
J'ai écrit cette déclaration:
usMoviesInRange <- movies %>% filter(country == "USA") %>% between(year, 1986, 2016)
mais j'obtiens une erreur indiquant,
Erreur entre (., année, 1986, 2016): argument non utilisé (2016)
Quelqu'un peut-il m'aider à comprendre ce qui se passe ici ou ce que je fais mal?
3 Réponses :
Je recommande vivement cette option, vous pouvez mettre plusieurs arguments dans dplyr::filter
country[between(x = country$year, left = 1986,right = 2016),]
Si vous utilisez dplyr :: between code> vous devez l'utiliser de cette manière:
usMoviesInRange = movies %>% filter(country %in% "USA", year > 1986, year < 2016)
J'espère que cela aide,
Pour ajouter à @danguloa, il semble qu'entre sreturn les booléens, c'est pourquoi il doit être indexé. Exemple: x <- data.frame (C = c ('US', 'US', 'MEX'), year = c (2015,2017,2019)) x%>% entre (année, 2015, 2017)
Merci pour cela, je viens d'un fond C # donc une partie de cela a du sens pour moi, mais la notation est ce qui me dérange.
Vous n'utilisez pas correctement entre (x, gauche, droite)
Essayez ceci
# A tibble: 2 x 2 country year <chr> <dbl> 1 USA 2000 2 USA 1990
pour donner
XXX
Curieux de savoir pourquoi vous avez utilisé un filtre supplémentaire et un tuyau. Pourquoi ne pas simplement l'ajouter au premier filtre?
Aucune raison particulière - j'ai juste essayé de corriger le code et c'était la première chose qui fonctionnait. Ou j'aurais pu utiliser filter (between (year, 1986, 2016))
comme Lunalo John l'a fait quelques minutes après moi - la bonne chose à propos de R est qu'il y a plusieurs façons de faire la même chose
Histoire vraie - j'étais simplement curieuse. J'apprends encore, donc parfois une petite chose comme celle-là a plus d'intention que je ne le pense. Merci pour le suivi!
peut être réécrit comme entre
la commande est utilisée à la place de > =
et par exemple
usMoviesInRange <- movies %>% filter(country == "USA") %>% filter(between(year, 1986, 2016))
usMoviesInRange <- movies %>% filter(country == "USA") %>% filter(year>=1986 &<=2016)
between
renvoie une valeur logique. Vous devez faire quelque chose comme:nycflights13 :: vols [entre (nycflights13 :: vols $ mois, 1, 4),]
ou l'utiliser dans lefiltre
: < code> nycflights13 :: vols%>% filtre (transporteur == "UA", entre (mois, 1,4))Utilisez simplement
entre
à l'intérieur dufiltre
:filter (country == "USA" & between (year, 1986, 2016))