library(tidyverse)
df <- read_csv("encuesta_tito.csv")
Parsed with column specification:
cols(
Alumno = col_character(),
`I.- Calidad del Contenido` = col_double(),
`II.- Motivaci�n` = col_double(),
`III.- Dise�o y Presentaci�n` = col_double(),
`IV.- Usabilidad` = col_double(),
`V.- Accesibilidad` = col_double(),
`VI.- Valor Educativo` = col_double(),
`VII.- Valoraci�n Global` = col_double()
)
glimpse(df)
Observations: 6
Variables: 8
$ Alumno [3m[38;5;246m<chr>[39m[23m "alumno 1", "alumno 2", "alumno 3", "alumno 4", "…
$ `I.- Calidad del Contenido` [3m[38;5;246m<dbl>[39m[23m 5, 4, 5, 4, 4, 5
$ `II.- Motivaci�n` [3m[38;5;246m<dbl>[39m[23m 4, 5, 4, 5, 5, 3
$ `III.- Dise�o y Presentaci�n` [3m[38;5;246m<dbl>[39m[23m 5, 5, 3, 5, 5, 4
$ `IV.- Usabilidad` [3m[38;5;246m<dbl>[39m[23m 5, 5, 5, 5, 5, 4
$ `V.- Accesibilidad` [3m[38;5;246m<dbl>[39m[23m 5, 4, 5, 4, 3, 3
$ `VI.- Valor Educativo` [3m[38;5;246m<dbl>[39m[23m 5, 4, 4, 5, 4, 5
$ `VII.- Valoraci�n Global` [3m[38;5;246m<dbl>[39m[23m 5, 5, 4, 5, 4, 4
df <- janitor::clean_names(df)
necesito hacer grafico de barras con el promedio de cada respuesta por categoría en columnas.
en el eje x que se encuentren los criterior de las columnas (I. calidad contenido; motivación; usabilidad, hasta el numer VII) y en el eje Y que este el valor promedio de las respuestas de las encuestas en números arábigos
1.- es deficiente 2.- suficiente 3.- promedio 4.- bien 5.- excelente.
library(likert)
mylevels <- c('Strongly Disagree', 'Disagree', 'Neither', 'Agree', 'Strongly Agree')
df <- df %>%
gather(key = "item", value = "value", i_calidad_del_contenido:vii_valoraci_n_global ) %>%
mutate(value = case_when(
value == "5" ~ "Strongly Agree",
value == "4" ~ "Agree",
value == "3" ~ "Neither",
value == "2" ~ "Disagree",
value == "1" ~ "Strongly Disagree"
)
) %>%
spread(item, value)
df <- as.data.frame(df)
str(df)
'data.frame': 6 obs. of 8 variables:
$ alumno : chr "alumno 1" "alumno 2" "alumno 3" "alumno 4" ...
$ i_calidad_del_contenido : chr "Strongly Agree" "Agree" "Strongly Agree" "Agree" ...
$ ii_motivaci_n : chr "Agree" "Strongly Agree" "Agree" "Strongly Agree" ...
$ iii_dise_o_y_presentaci_n: chr "Strongly Agree" "Strongly Agree" "Neither" "Strongly Agree" ...
$ iv_usabilidad : chr "Strongly Agree" "Strongly Agree" "Strongly Agree" "Strongly Agree" ...
$ v_accesibilidad : chr "Strongly Agree" "Agree" "Strongly Agree" "Agree" ...
$ vi_valor_educativo : chr "Strongly Agree" "Agree" "Agree" "Strongly Agree" ...
$ vii_valoraci_n_global : chr "Strongly Agree" "Strongly Agree" "Agree" "Strongly Agree" ...
df <- df %>%
mutate_if(is.character,as.factor)
df2 <- df %>%
select(-alumno)
df2 <- likert(df2)
Error in likert(df2) :
All items (columns) must have the same number of levels
Fail! vamos a ver como solucionar esto…
sapply(df2, class) # todos factores, verdad?
i_calidad_del_contenido ii_motivaci_n iii_dise_o_y_presentaci_n
"factor" "factor" "factor"
iv_usabilidad v_accesibilidad vi_valor_educativo
"factor" "factor" "factor"
vii_valoraci_n_global
"factor"
sapply(df2, function(x) { length(levels(x)) } ) # el numero de niveles por factor
i_calidad_del_contenido ii_motivaci_n iii_dise_o_y_presentaci_n
2 3 3
iv_usabilidad v_accesibilidad vi_valor_educativo
2 3 2
vii_valoraci_n_global
2
sapply(df2, function(x) { length(levels(x)) } ) # el numero de niveles por factor
i_calidad_del_contenido ii_motivaci_n iii_dise_o_y_presentaci_n
5 5 5
iv_usabilidad v_accesibilidad vi_valor_educativo
5 5 5
vii_valoraci_n_global
5
Ahora debería funcionar…
df2_likert <- likert::likert(df2)
Error in likert::likert(df2) :
All items (columns) must have the same number of levels