R: Расчет процента для шкалы Лайкерта и создание барплотов с этими процентами - PullRequest
0 голосов
/ 25 мая 2018

У меня есть данные от мужчин (1) и женщин (2) с ответами по шкале Лайкерта.Я пытаюсь рассчитать процент для каждого из них (например, мужчина с ответом 1 из всех 226 респондентов).Таким образом, процент должен был бы представлять% от всех 226, чтобы я мог видеть процент каждого респондента.

Графики довольно симпатичны, но я не могу превратить шкалу y в процент (в настоящее времяустановить на значения).

Это мой ввод:

barplot(table(Short$Gen,Short$optq18), beside=T, cex.names=0.7, 
        legend.text=c("Male", "Female"), args.legend=list(x=3.5,y=60,cex=0.8),
        col=c("bisque1", "cyan4"),
        xlab = "It is important to control monthly expenses",
        ylab = "Percentage",
        )
text(1.4,5, "0,44%", cex=0.6)
text(2.4,4, "0%", cex=0.6)
text(4.6,8.5, "2,21%", cex=0.6)
text(5.6,7, "1,76%", cex=0.6)
text(7.5,18, "6,63%", cex=0.6)
text(8.5,26.5, "10,17%", cex=0.6)
text(10.6,37, "15%", cex=0.6)
text(11.6,47.5, "19,4%", cex=0.6)
text(13.5,41, "16,8%", cex=0.6)
text(14.6,63, "17,43%", cex=0.6)

И графики:

enter image description here

И пример из данных:

enter image description here

где Страна имеет 3 уровня, Пол имеет 2, optq имеет 5 (1,2,3,4,5) шкала Лайкерта

1 Ответ

0 голосов
/ 25 мая 2018
# example data
dt = data.frame(Gen = c(1,1,1,1,1,2,2,2,2,2),
                optq18 = c(1,2,2,2,3,2,1,1,1,3))

library(tidyverse)

dt %>%
  group_by(optq18) %>%                                            # for each question number
  count(Gen) %>%                                                  # count gender type
  mutate(Prc = round(n/sum(n),2),                                 # get percentage of gender up to 2 decimal points
         Gen = ifelse(Gen == 1, "Male", "Female")) %>%            # update variable
  ungroup() %>%                                                   # forget the grouping
  mutate(Prc_text = paste0(Prc*100, "%")) %>%                     # update how percentages appear
  ggplot(aes(factor(optq18), Prc, fill=Gen))+                     # plot
  geom_bar(position = "dodge", stat = "identity")+                # add bars
  geom_text(aes(label=Prc_text), position = position_dodge(width=1), size=8)+  # add percentages on top of bars
  xlab("")+                                                       # no x axis title
  ylab("Percentage")+                                             # y axis title
  labs(caption = "It is important to control monthly expenses")+  # add your comment
  theme(plot.caption = element_text(hjust = 0.5))+                # put comment in the middle
  scale_fill_manual(values=c("Female"="green", "Male"="orange"))  # pick your colours

enter image description here

...