如何用sjPlot包plot_likert函数绘制字符型李克特量表数据?
报错原因
sjPlot包的plot_likert()函数仅支持数值型或有序因子型的李克特数据输入,纯字符型变量没有固定的选项排序逻辑,无法被函数自动识别转换为可计算的数值,因此会触发类型转换报错。
解决步骤
- 先明确定义李克特选项的排序规则,将所有字符型题项批量转换为有序因子,避免R按字母序默认排序打乱选项逻辑:
# 定义李克特选项的正确顺序(按同意程度从低到高排列) likert_levels <- c("Strongly Disagree", "Disagree", "Neutral", "Agree", "Strongly Agree") # 批量转换数据框所有列为有序因子,如仅部分列是李克特题项,把everything()替换为对应列名的向量即可 library(dplyr) df1_ordered <- df1 %>% mutate(across(everything(), ~factor(.x, levels = likert_levels, ordered = TRUE)))
- 用转换后的有序因子数据直接调用绘图函数即可:
library(sjPlot) plot_likert(df1_ordered)
补充说明
- 如需要调整选项的显示顺序,直接修改
likert_levels向量内的元素顺序即可 - 也可将字符选项手动映射为1-5的数值后绘图,但有序因子方案可以直接保留原文本标签在图例中,无需额外手动修改图例配置
内容的提问来源于stack exchange,提问作者MYaseen208
相关产品推荐
相关产品推荐

