You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sjPlot包plot_likert函数绘制字符型李克特量表数据?

报错原因

sjPlot包的plot_likert()函数仅支持数值型或有序因子型的李克特数据输入,纯字符型变量没有固定的选项排序逻辑,无法被函数自动识别转换为可计算的数值,因此会触发类型转换报错。

解决步骤
  1. 先明确定义李克特选项的排序规则,将所有字符型题项批量转换为有序因子,避免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)))
  1. 用转换后的有序因子数据直接调用绘图函数即可:
library(sjPlot)
plot_likert(df1_ordered)
补充说明
  • 如需要调整选项的显示顺序,直接修改likert_levels向量内的元素顺序即可
  • 也可将字符选项手动映射为1-5的数值后绘图,但有序因子方案可以直接保留原文本标签在图例中,无需额外手动修改图例配置

内容的提问来源于stack exchange,提问作者MYaseen208

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:51:03