Unificar categorías de dataframe en R
por Diego Calvo | Jun 19, 2018 | R |
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