使用R语言Likert包绘制李克特量表时如何自定义题项排序
解决方案
你之前的尝试不生效,是因为likert包的绘图逻辑默认读取likert对象内results子数据框的Item列作为排序依据,仅修改外层的Item列不会影响绘图顺序。
方案1:极简实现question1到question4从上到下排列
直接调整输入数据框的列顺序,绘图时关闭自动排序即可:
# 构造测试数据(和原有代码一致) question1<- c(1,5,3,4,1,1,1,3,4,5) question2<- rev(c(1,5,3,4,1,1,1,3,4,5)) question3<- c(1,1,1,2,2,2,3,3,4,5) question4<- c(5,5,5,4,4,4,3,3,2,1) testData<-data.frame(question1,question2,question3,question4) testData <- lapply(testData, factor, levels= c(1:5), ordered = TRUE) testData <- as.data.frame(testData) # 调整列顺序+关闭自动排序 testData <- testData[, c("question4", "question3", "question2", "question1")] p <- likert(testData) plot(p, ordered = FALSE)
方案2:支持任意自定义排序
如果需要灵活调整题项顺序,直接修改results子数据框的Item因子水平即可:
p <- likert(testData) # 自定义从上到下的顺序:question1 > question2 > question3 > question4 # levels参数按从下到上的显示顺序填写,所以用rev()反转需求顺序即可 p$results$Item <- factor(p$results$Item, levels = rev(c("question1", "question2", "question3", "question4"))) # 示例:如果要自定义为从上到下question3 > question1 > question4 > question2,就改成: # p$results$Item <- factor(p$results$Item, levels = rev(c("question3", "question1", "question4", "question2"))) plot(p)
内容的提问来源于stack exchange,提问作者LBes
相关产品推荐
相关产品推荐

