R语言likert包分组李克特图如何保持题项按得分高低排序
R语言likert包分组绘图题项排序与未分组一致的解决方法
likert包绘图的题项顺序由likert对象中results数据框的Item列的因子水平决定。分组场景下ordered参数的排序逻辑与未分组场景不同,修改输入数据列顺序无效是因为函数内部会默认生成Item列的因子水平,不受输入列顺序影响。直接手动修改分组likert对象的Item因子水平即可实现自定义排序。
步骤1:提取未分组场景的目标题项顺序
先运行未分组的likert计算,提取对应排序结果:
library(likert) library(dplyr) data(pisaitems) # 提取目标题项 items28 <- as.data.frame(pisaitems[, substr(names(pisaitems), 1, 5) == "ST24Q"]) # 计算未分组likert结果 p_ungroup <- likert(items28) # 提取未分组绘图的题项顺序(从上到下) target_order <- levels(p_ungroup$results$Item)
如果需要自定义排序,也可以直接手动指定该顺序,例如:target_order <- c("ST24Q10", "ST24Q05", "ST24Q09", "ST24Q08", "ST24Q04", "ST24Q11", "ST24Q03", "ST24Q02", "ST24Q05", "ST24Q10", "ST24Q07")
步骤2:修改分组likert对象的因子水平
计算分组likert后,将Item列的因子水平替换为目标顺序:
# 添加分组变量 items28$groups <- as.factor(sample(c("A","B","C"), nrow(items28), replace = TRUE)) # 计算分组likert结果 p_group <- likert(items28[, !names(items28) %in% "groups"], grouping = items28$groups) # 核心操作:重设Item列的因子水平 p_group$results$Item <- factor(p_group$results$Item, levels = target_order)
步骤3:绘图验证
直接调用plot函数即可得到与未分组排序一致的分组李克特图:
plot(p_group)
内容的提问来源于stack exchange,提问作者Elizabeth Brown
相关产品推荐
相关产品推荐

