análisis de datos factorizados con wordcloud

analisis
R
Author

Roberto Gil-Saura

Published

August 23, 2021

Hola de nuevo. Como siempre hemos tardado mucho, pero aquí dejamos este nuevo post con la explicación de cómo hacer un wordclou y no con palabras sino con las etiquetas de una variable factorizada o etiquetada desde SPSS.

Veamos los siguientes datos utilizados en el post anteriory mostramos los datos.

suppressMessages(library(expss))
suppressMessages(library(wordcloud))
suppressMessages(library(DT))

df <-
  data.frame(
    id = seq(1:7),
    p56_1 = c(1, 2, 3, 3, 1, 7, 8),
    p56_2 = c(2, 3, 7, 5, 6, NA, 9),
    p56_3 = c(3, 4, NA, NA, NA, NA, 10)
  )

Mostramos el dataframe creado …

datatable(df)

tabla de datos

Etiquetamos ahora los datos que como bien sabes, vienen del proceso de codificación.

var_lab(df$p56_1) <- 'Likes de la crema' #etiquetamos la variable
val_lab(df$p56_1) <- c(
  'Color azul' = 1,
  'Color verde' = 2,
  'Mar, playa' = 3,
  'Cielo' = 4,
  'Infancia' = 5,
  'Sol, luz' = 6,
  'Olor' = 7,
  'Densidad' = 8,
  'Capacidad de aplicación' = 9,
  'Absorción' = 10)

Y hacemos la tabla utilizando la librería expss. Mostramos su resultado.

tab <- df %>% 
                         tab_cells('|'=unvr(mrset_f(p56_))) %>% 
                         tab_total_row_position(total_row_position='none') %>%
                         tab_stat_cases() %>% 
                         tab_pivot()
as.datatable_widget(tab)

tabla de frecuencias

tab <- as.data.frame(tab)

Podemos observar que en la tabla resultante, las etiquetas cotntienen espacios en blanco y símbolos de puntuación. Normalmente una nube de palabras eliminaría estas expresiones y mostraría palabra a plaabra. Pero nosotros no queremos que sea así y por eso queremos obtener la nube directamente sobre esta tabla de marginales.

Nuestro gráfico de nube sólo necesita los datos que tenemo. Por facilitar las cosas, en lugar de mantener los nombres de columna que originalmente nos da la tabla, vamos a cambiarlos y a llamarlos word para la expresión a mostrar y freqpara el peso o freuencia de esa expresión en el mapa.

colnames(tab) <- c('word', 'freq') # cambiamos los nombres a las columnas y hacemos el gráfico
set.seed(311265) #fijamos la semilla de aleatorización para que el mapa si no cambian los datos siempre salga igual.
wordcloud(words = tab$word, 
          freq = tab$freq, 
          min.freq = 1,           
          max.words=200, 
          random.order=FALSE, 
          rot.per=0.15,            
          colors=brewer.pal(8, "Set1")) #hacemos la nube más simple

nube de factores o etiquetas

Y ya está. Nuestra nube representa ahora los datos factorizados o como me gusta a mi decirlo etiquetados. Ya ves que simple y qué ilustrativo.

Nuestro próximo post generará un gráfico denominado sunburnst que presenta muy bien y de forma muy gráfica los net y/o subtotales para un sólo vistazo.