Filtrado de fila que contiene una determinada string usando Dplyr en R

En este artículo, aprenderemos a filtrar filas que contienen una determinada string utilizando el paquete dplyr en el lenguaje de programación R.

Funciones utilizadas

Dos funciones principales que se utilizarán para llevar a cabo esta tarea son:

  • filter() : la función de filtro del paquete dplyr se usará para filtrar filas según la condición

Sintaxis : filtro (df, condición)

Parámetro :

  • df:  el objeto del marco de datos
  • condition:  La condición para filtrar los datos sobre
  • grepl() : la función grepl() se usa para devolver el valor VERDADERO si el patrón de string especificado se encuentra en el vector y FALSO si no se encuentra.

Sintaxis : grepl(patrón, string, ignore.case=FALSE)

Parámetros :

  • patrón : patrón de expresiones regulares
  • string : vector de caracteres a buscar
  • ignore.case : si ignorar mayúsculas y minúsculas en la búsqueda. Aquí ignore.case es un parámetro opcional ya que está configurado en FALSO de forma predeterminada.

Marco de datos en uso:

 marcas  años roles
20.1 21 Ing. de Software
30.2 22 Desarrollador de software
40.3 23 Analista de datos
 50.4 24  Ing. de datos
60.5 25 Desarrollador front-end

 

Filtrado de filas que contienen la string dada

Aquí tenemos que pasar la string a buscar en la función grepl() y la columna a buscar, esta función devuelve verdadero o falso según la función filter() imprime las filas.

Sintaxis: df %>% filter(grepl(‘Pattern’, column_name))

Parámetros:

df: objeto de marco de datos

  • grepl(): encuentra el patrón String
  • “Patrón”: patrón (string) a encontrar
  • column_name : el patrón (string) se buscará en esta columna

Ejemplo: 

R

library(dplyr)
df <- data.frame( marks = c(20.1, 30.2, 40.3, 50.4, 60.5),
                   
                 age = c(21:25),
  
                 roles = c('Software Eng.', 'Software Dev', 
                           'Data Analyst', 'Data Eng.', 
                           'FrontEnd Dev'))
  
df %>% filter(grepl('Dev', roles))

Producción:

  marks age        roles
1  30.2  22 Software Dev
2  60.5  25 FrontEnd Dev

Filtrado de filas que no contienen la string dada

Tenga en cuenta que la única diferencia en este código del enfoque anterior es que aquí estamos usando un ‘ ! not operator, este operador invierte la salida proporcionada por la función grepl() al convertir VERDADERO en FALSO y viceversa, esto en resultado solo imprime las filas que no contienen los patrones y filtra las filas que contienen el patrón.

Sintaxis : df %>% filter(!grepl(‘Pattern’, column_name))

Parámetros :

  • df : objeto de marco de datos
  • grepl(): encuentra el patrón String
  • Patrón ”: patrón (string) a encontrar
  • column_name : el patrón (string) se buscará en esta columna

Ejemplo: 

R

library(dplyr)
  
df <- data.frame( marks = c(20.1, 30.2, 40.3, 50.4, 60.5),
                   
                 age = c(21:25),
  
                 roles = c('Software Eng.', 'Software Dev',
                           'Data Analyst', 'Data Eng.',
                           'FrontEnd Dev'))
  
df %>% filter(!grepl('Eng.', roles))

Producción:

  marks age        roles
1  30.2  22 Software Dev
2  40.3  23 Data Analyst
3  60.5  25 FrontEnd Dev

Filtrado de filas que contienen múltiples patrones (strings)

Este código también es similar a los enfoques anteriores, la única diferencia es que al pasar múltiples patrones (string) en la función grepl() , los patrones se separan con el operador OR (‘ | ‘). Esto imprime todas las filas que contienen el patrón especificado.

Sintaxis

df %>% filter(grepl(‘ Patt.1 | Patt.2 ‘, column_name))

Ejemplo :

R

library(dplyr)
  
df <- data.frame( marks = c(20.1, 30.2, 40.3, 50.4, 60.5),
                   
                 age = c(21:25),
  
                 roles = c('Software Eng.', 'Software Dev', 
                           'Data Analyst', 'Data Eng.',
                           'FrontEnd Dev'))
  
df %>% filter(grepl('Dev|Eng.', roles))

Producción:

 marks age         roles
1  20.1  21 Software Eng.
2  30.2  22  Software Dev
3  50.4  24     Data Eng.
4  60.5  25  FrontEnd Dev

Filtrado de filas que no contienen múltiples patrones (strings)

Este código es similar al enfoque anterior, la única diferencia es que estamos usando ‘ ! not operator, este operador invierte la salida proporcionada por la función grepl() al convertir VERDADERO en FALSO y viceversa, esto en resultado solo imprime las filas que no contienen los patrones múltiples especificados y filtra las filas que contienen los patrones.

Sintaxis

df %>% filter(!grepl(‘Pat.1 | Patt.2’, nombre_columna))

Ejemplo

R

library(dplyr)
  
df <- data.frame( marks = c(20.1, 30.2, 40.3, 50.4, 60.5),
                   
                 age = c(21:25),
  
                 roles = c('Software Eng.', 'Software Dev', 
                           'Data Analyst', 'Data Eng.',
                           'FrontEnd Dev'))
  
df %>% filter(!grepl('Data|Front', roles))

Producción:

  marks age         roles
1  20.1  21 Software Eng.
2  30.2  22  Software Dev

Publicación traducida automáticamente

Artículo escrito por sudhanshublaze y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *