studio filtros filtrar datos data con cheatsheet agrupar r filter dplyr grepl

filtros - Filtrado de observaciones en dplyr en combinación con grepl.



filtrar datos en r (1)

No entendí tu segundo regex, pero este regex más básico parece hacer el truco:

df1 %>% filter(!grepl("^x|xx$", fruit)) ### fruit group 1 apple A 2 orange B 3 banxana A 4 appxxle B

Y asumo que sabes esto, pero no tienes que usar dplyr aquí:

df1[!grepl("^x|xx$", df1$fruit), ] ### fruit group 1 apple A 2 orange B 7 banxana A 8 appxxle B

La expresión regular busca cadenas que comiencen con x O terminen con xx . ^ Y $ son anclajes de expresiones regulares para el principio y el final de la cadena respectivamente. | es el operador OR Estamos negando los resultados de grepl con el ! así que estamos encontrando cadenas que no coinciden con lo que está dentro de la expresión regular.

Estoy tratando de averiguar cómo filtrar algunas observaciones de un gran conjunto de datos usando dplyr y grepl . No estoy casado con grepl , si otras soluciones serían más óptimas.

Toma 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:

  1. filtrar los casos que comienzan con ''x''
  2. filtrar los casos que terminan con ''xx''

Me las arreglé para averiguar cómo deshacerme de todo lo que contiene ''x'' o ''xx'', pero sin comenzar ni terminar con. Aquí es 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 me he acostumbrado a las expresiones regulares. He estado intentando modificar código como: grepl("^(?!x).*$", df1$fruit, perl = TRUE) para intentar que funcione dentro del comando de filtro, pero no lo consigo. .

Rendimiento esperado:

# fruit group #1 apple A #2 orange B #3 banxana A #4 appxxle B

Me gustaría hacer esto dentro de dplyr si es posible.