Имена легенды графика Лайкерта для ответа

Я разработал сценарий для построения шкалы Лайкерта. Скрипт работает правильно, сюжет правильный. Я хочу изменить метку ответа, которая будет «Совершенно не согласен», «Не согласен», «Слегка не согласен», «Скорее согласен», «Согласен», «Полностью согласен» в упорядоченном списке. Я пробовал разные решения, но, похоже, ни одно из них не работает

Q1 <- read_excel("C:\\Users\\users\\Desktop\\Survey Responses\\Business Survey\\BusinessLikert.xlsx")

df <- data.frame(respondent = c(Q1$Respondent), Score = c(Q1$Q1))

df1 <- likert(items=df[,2, drop = FALSE], nlevels = 6)

summary(df1)

likert.bar.plot(df1)

likert.density.plot(df1)

изображение


person user11557166    schedule 30.06.2019    source источник


Ответы (1)


Как указано в документации функции likert (?likert::likert), столбцы data.frame в items должны быть факторами. Затем имена уровней определяют метки отклика, используемые в производных графиках Лайкерта. Поскольку ваши данные не воспроизводятся, рассмотрим следующий искусственный пример:

library(likert)

set.seed(1)
df <- data.frame(Score = factor(sample(1:6, size = 100, replace = TRUE), 
                 labels = c("Strongly Disagree", "Disagree", "Slightly Disagree", "Slightly Agree", "Agree", "Strongly Agree")))
(df_likert <- likert(items = df))
#>    Item Strongly Disagree Disagree Slightly Disagree Slightly Agree Agree
#> 1 Score                19       18                12             15    15
#>   Strongly Agree
#> 1             21

likert.bar.plot(df_likert)


Изменить: для нескольких (например, числовых) столбцов, представляющих отдельные группы ответов в data.frame, сначала перекодируйте столбцы как факторы, а затем примените функцию likert к перекодированному data.frame:

## initial data.frame of integers
df <- data.frame(
  sapply(c("Q1", "Q2", "Q3"), function(x) sample(1:6, size = 100, replace = TRUE))
)

## recode each column as a factor
df_factor <- as.data.frame(
  lapply(df, function(x) factor(x, 
      labels = c("Strongly Disagree", "Disagree", "Slightly Disagree", 
                 "Slightly Agree", "Agree", "Strongly Agree"))
  )
)

(df_likert <- likert(items = df_factor))
#>   Item Strongly Disagree Disagree Slightly Disagree Slightly Agree Agree
#> 1   Q1                19       18                12             15    15
#> 2   Q2                19       16                19             18    15
#> 3   Q3                18       15                 8             21    20
#>   Strongly Agree
#> 1             21
#> 2             13
#> 3             18

likert.bar.plot(df_likert)

Лайкерт строит несколько групп

person Joris C.    schedule 30.06.2019
comment
... и вы можете использовать что-то вроде этого для преобразования существующего 1: 6 в соответствующий коэффициент: df$Score_factor = factor(df$Score, labels = c("Strongly Disagree", "Disagree", "Slightly Disagree", "Slightly Agree", "Agree", "Strongly Agree")) - person Jon Spring; 01.07.2019
comment
Спасибо Джорису за вашу помощь. Я не понимаю, где следует разместить ввод моих данных в вашем скрипте в двух строках ниже Q1 ‹- read_excel (C: \\ Users \\ users \\ Desktop \\ Survey Responses \\ Business Survey \\ BusinessLikert.xlsx) df ‹- data.frame (респондент = c (Q1 $ респондент), Score = c (Q1 $ Q1)). - person user11557166; 01.07.2019
comment
Как прокомментировал @JonSpring, вы можете преобразовать существующий столбец Score в вашем data.frame в коэффициент с factor и указать его имена уровней. Подробнее о факторах в R можно прочитать здесь: stat.berkeley.edu/~s133/ Factors.html - person Joris C.; 01.07.2019
comment
Забыл упомянуть, что ввод данных представляет собой 11 столбцов Q1, Q2, Q3, Q4 и т. Д. С оценками ответов из опроса. Всего 47 ответов для каждого столбца, например, в Q1 есть 47 ячеек с ответами от 1 до 6. - person user11557166; 01.07.2019
comment
Как есть, ваши данные не воспроизводятся, рассмотрите возможность включения (части) ваших данных в вопрос с помощью dput или включите искусственно созданный набор данных с аналогичной структурой, см. Также stackoverflow.com/questions/5963269/ - person Joris C.; 01.07.2019
comment
@ user11557166 Я включил пример, который перекодирует несколько столбцов data.frame в качестве факторов перед вызовом функции likert - person Joris C.; 01.07.2019