使用 sjPlot 中的 plot_likert 函数绘制李克特尺度

Plotting likert scales with plot_likert function from sjPlot

我有字符格式的李克特量表数据,想使用 sjPlot R 包中的 plot_likert 函数绘制它。

df1 <-
  data.frame(
  matrix(
    data = sample(x = c("Strongly Disagree", "Disagree", "Neutral", "Agree", "Strongly Agree"), size = 500, replace = TRUE),
    ncol = 5
    )
  )
    
head(df1)
                 X1                X2                X3                X4
1           Neutral           Neutral Strongly Disagree    Strongly Agree
2          Disagree          Disagree    Strongly Agree             Agree
3           Neutral    Strongly Agree Strongly Disagree             Agree
4           Neutral    Strongly Agree             Agree Strongly Disagree
5           Neutral           Neutral          Disagree Strongly Disagree
6 Strongly Disagree Strongly Disagree             Agree Strongly Disagree
                 X5
1          Disagree
2 Strongly Disagree
3 Strongly Disagree
4           Neutral
5 Strongly Disagree
6             Agree

library(sjPlot)

plot_likert(df1)

    Error: Can't coerce element 1 from a character to a double
In addition: There were 18 warnings (use warnings() to see them)

但是,plot_likert 适用于数字数据。

df2 <-
  data.frame(
  matrix(
    data = sample(x = 1:5, size = 500, replace = TRUE),
    ncol = 5
    )
  )

df2

plot_likert(df2)

一个帮助。

要绘制数据,您必须先将 character 转换为 ordered factor,然后再将其传递给 plot_likert。否则,plot_likert 怎么知道,如何排序你的类别。

另外请注意,plot_likert 仅适用于偶数个类别(参见 ?plot_likert)。但是你通过选项 cat.neutral.

设置了中性类别
library(sjPlot)

df1 <-
  data.frame(
    matrix(
      data = sample(x = c("Strongly Disagree", "Disagree", "Neutral", "Agree", "Strongly Agree"), size = 500, replace = TRUE),
      ncol = 5
    )
  )

df1 <- dplyr::mutate_all(df1, ~ ordered(., levels = c("Strongly Disagree", "Disagree", "Neutral", "Agree", "Strongly Agree")))

plot_likert(df1, cat.neutral = 3)