## X Q1 Q2 Q3 Q4 Q5
## Respondent 1 : 1 Never : 6 Never :24 Never :23 Never : 7 Never :12
## Respondent 10: 1 Rarely:28 Rarely:10 Open : 1 Open : 8 Open :10
## Respondent 11: 1 Rarely:10 Rarely:19 Rarely:12
## Respondent 12: 1
## Respondent 13: 1
## Respondent 14: 1
## (Other) :28
## Q6
## Almost every time:17
## Open :17
##
##
##
##
##
library(dplyr)
levs <- c("Never", "Rarely", "Open", "Almost every time")
df1 <- df %>%
mutate(across(Q1:Q6, ~ factor(.x, levels = levs)))
summary(df1)## X Q1 Q2
## Respondent 1 : 1 Never : 6 Never :24
## Respondent 10: 1 Rarely :28 Rarely :10
## Respondent 11: 1 Open : 0 Open : 0
## Respondent 12: 1 Almost every time: 0 Almost every time: 0
## Respondent 13: 1
## Respondent 14: 1
## (Other) :28
## Q3 Q4 Q5
## Never :23 Never : 7 Never :12
## Rarely :10 Rarely :19 Rarely :12
## Open : 1 Open : 8 Open :10
## Almost every time: 0 Almost every time: 0 Almost every time: 0
##
##
##
## Q6
## Never : 0
## Rarely : 0
## Open :17
## Almost every time:17
##
##
##
library(sjmisc) # for find_var() function
library(sjPlot) # for plot_likert() function
mydf <- find_var(df1, pattern = "Q", out = "df")
plot_likert(mydf, title = "Likert Scale Visualization", reverse.scale = T,
catcount = 4, show.n = T, values = "hide") +
legend_style(pos = "bottom", base.theme = theme_sjplot2())Data wrangling:
library(dplyr) # for data wrangling
library(tidyr) # for pivot_longer() function
df2 <- df1 %>%
pivot_longer(cols = Q1:Q6, names_to = "Questions", values_to = "Response") %>%
group_by(Questions, Response) %>%
count()
print(df2)## # A tibble: 15 × 3
## # Groups: Questions, Response [15]
## Questions Response n
## <chr> <fct> <int>
## 1 Q1 Never 6
## 2 Q1 Rarely 28
## 3 Q2 Never 24
## 4 Q2 Rarely 10
## 5 Q3 Never 23
## 6 Q3 Rarely 10
## 7 Q3 Open 1
## 8 Q4 Never 7
## 9 Q4 Rarely 19
## 10 Q4 Open 8
## 11 Q5 Never 12
## 12 Q5 Rarely 12
## 13 Q5 Open 10
## 14 Q6 Open 17
## 15 Q6 Almost every time 17
Visualization:
library(ggplot2)
df2 %>%
ggplot(aes(y = Questions, x = n, fill = Response)) +
geom_col(position = "stack", alpha = 0.9) +
geom_text(aes(label = n), size = 4, color = "white", position = position_stack(vjust = 0.5)) +
theme_bw() +
theme(legend.position="bottom", plot.title = element_text(hjust = 0.5)) +
guides(fill = guide_legend(reverse=TRUE)) +
scale_fill_brewer(palette = "Dark2") +
labs(title = "Likert Scale Visualization", x = "Freq.", y = "Questions")