Unificar categorias sustituyendo por elementos de un conjunto
# Ampliar el conjunto de datos datos$sexo <- c("masculino","h", "hombre", "h","mujer","femenino", "mujer", "m") # Ver que valores toma la variable unique(datos$sexo) ## [1] "masculino" "h" "hombre" "mujer" "femenino" "m" # Definir los nombres que pueden aparecer en el cojunto de datos nombres.hombre <- c("masculino", "hombre", "h") nombres.mujer <- c("femenino", "mujer", "m") library(stringi) datos$sexo <- tolower(datos$sexo) datos$sexo <- sapply(as.vector(datos$sexo), function(x) if(x %in% nombres.hombre) "Hombre" else x ) datos$sexo <- sapply(as.vector(datos$sexo), function(x) if(x %in% nombres.mujer) "Mujer" else x ) datos$sexo ## [1] "Hombre" "Hombre" "Hombre" "Hombre" "Mujer" "Mujer" "Mujer" "Mujer"
Unificar categorias de variables que contengan un substring
id <- c(10,20,30,40,50,60) texto <- c("carne roja","pescado blanco","pescado azul", "fruta roja", "fruta verde", "verdura verde") datos <- data.frame(id=id,texto=texto) head(datos) # Seleccionar las posiciones que contengan la palabra "roja" ids <- grep("roja", datos$texto, ignore.case=TRUE) # Seleccionar los valores que contengan "roja" list <- datos$texto[ids]
# Filtrar del dataframe filter(datos, texto %in% list) id texto 1 10 carne roja 2 40 fruta roja
0 comentarios