Observaciones de filtrado en dplyr en combinación con grepl
Estoy tratando de averiguar cómo filtrar algunas observaciones de un gran conjunto de datos usandodplyr
ygrepl
. No estoy casado congrepl
, si otras soluciones serían más óptimas.
Tome esta muestra 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
Quiero:
filtrar esos casos que comienzan con 'x'filtrar los casos que terminan con 'xx'Me las he arreglado para descubrir cómo deshacerme de todo lo que contiene 'x' o 'xx', pero que no comienza ni termina con. Aquí se explica cómo deshacerse de todo con 'xx' dentro (no solo terminando con):
df1 %>% filter(!grepl("xx",fruit))
# fruit group
#1 apple A
#2 orange B
#3 xapple A
#4 xorange B
#5 banxana A
Esto obviamente 'erróneamente' (desde mi punto de vista) filtró 'appxxle'.
Nunca he entendido completamente las expresiones regulares. He estado tratando de modificar código como:grepl("^(?!x).*$", df1$fruit, perl = TRUE)
para intentar que funcione dentro del comando de filtro, pero no lo entiendo del todo.
Rendimiento esperado:
# fruit group
#1 apple A
#2 orange B
#3 banxana A
#4 appxxle B
Me gustaría hacer esto adentrodplyr
si es posible.