Ich versuche herauszufinden, wie man einige Beobachtungen aus einem großen Datensatz mit dplyr
und grepl
filtern kann. Ich bin nicht mit grepl
verheiratet, wenn andere Lösungen optimal wären.Filtern von Beobachtungen in dplyr in Kombination mit grepl
Nehmen Sie diese Probe df:
df1 <- data.frame(fruit=c("apple", "orange", "xapple", "xorange",
"applexx", "orangexx", "banxana", "appxxle"), group=c("A", "B"))
df1
# fruit group
#1 apple A
#2 orange B
#3 xapple A
#4 xorange B
#5 applexx A
#6 orangexx B
#7 banxana A
#8 appxxle B
Ich möchte:
- Filter jene Fälle, beginnend mit 'x'
- Filter, um diese Fälle mit der Endung 'xx' aus
Ich habe es geschafft, herauszufinden, wie man alles loswerden kann, das 'x' oder 'xx' enthält, aber nicht mit o beginnt endend mit. Hier ist, wie mit ‚xx‘ los, um alles im Innern (nicht nur mit der Endung):
df1 %>% filter(!grepl("xx",fruit))
# fruit group
#1 apple A
#2 orange B
#3 xapple A
#4 xorange B
#5 banxana A
Das ist offensichtlich ‚irrtümlich‘ (aus meiner Sicht) gefiltert ‚appxxle‘.
Ich habe mich nie richtig mit regulären Ausdrücken beschäftigt. Ich habe versucht, Code wie: grepl("^(?!x).*$", df1$fruit, perl = TRUE)
zu ändern, um zu versuchen, es innerhalb des Filterbefehls zu arbeiten, aber ich bin nicht ganz dabei.
Erwarteter Ausgang:
# fruit group
#1 apple A
#2 orange B
#3 banxana A
#4 appxxle B
Ich möchte diese, wenn möglich, innerhalb dplyr
zu tun.