Expressions régulières (RegEx) et dplyr :: filter ()
J'ai un simple bloc de données qui ressemble à ceci:
x <- c("aa", "aa", "aa", "bb", "cc", "cc", "cc")
y <- c(101, 102, 113, 201, 202, 344, 407)
df = data.frame(x, y)
x y
1 aa 101
2 aa 102
3 aa 113
4 bb 201
5 cc 202
6 cc 344
7 cc 407
Je voudrais utiliser un dplyr::filter() et un RegEx de filtrer toutes les y
observations qui commencent par le chiffre 1
J'imagine que le code devrait ressembler à quelque chose comme ceci:
df %>%
filter(y != grep("^1"))
Mais je suis un Error in grep("^1") : argument "x" is missing, with no default
source d'informationauteur emehex | 2015-03-04
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de vérifier les documentations pour
grepl
etfilter
.Pour
grep
/grepl
vous devez également fournir le vecteur que vous voulez vérifier dans (y, dans ce cas) etfilter
prend une logique de vecteur (c'est à dire que vous devez utilisergrepl
). Si vous voulez fournir un indice de vecteur (degrep
), vous pouvez utiliserslice
à la place.Ou avec un indice dérivé de
grep
:Mais vous pouvez aussi simplement utiliser
substr
parce que vous êtes uniquement intéressé par le premier caractère:Avec une combinaison de
dplyr
etstringr
(pour rester dans le tidyverse), vous pourriez faire :Cela fonctionne parce que
str_detect
renvoie une logique de vecteur.