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)
)
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.
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.
<- df %>%
tab 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
<- as.data.frame(tab) 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 freq
para 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
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.