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