求助:R语言likert包处理偶数类别汇总数据报错问题
解决方法:处理偶数类汇总数据的likert图表问题
报错根源是likert()函数默认假设存在中性类别,但4类李克特量表无中性项,且未明确指定高低分组规则。结合center参数(支持整数)和数据结构调整,可直接解决问题:
步骤1:确认汇总数据结构
你的df2已经符合要求:每行对应一个问卷项,列对应各李克特类别的百分比,列名为类别数值(如"1""2""3""4"),无需调整结构。
步骤2:调用likert()时指定center参数
对于4类量表,设置center=2,函数会自动将≤2的类别归为低分组,>2的类别归为高分组,刚好对应你需要的2.5分割逻辑(整数center代表分界点的左侧类别上限,等价于两类中间的分割值)。
修改后的完整可运行代码:
rm(list=ls()) data("pisaitems") # 原始微数据运行(对比参考) cana1 <- likert(pisaitems[2:4]) plot(cana1) # 构造汇总数据框 ST24Q01 <- prop.table(table(pisaitems$ST24Q01))*100 ST24Q02 <- prop.table(table(pisaitems$ST24Q02))*100 ST24Q03 <- prop.table(table(pisaitems$ST24Q03))*100 df2 <- as.data.frame(t(cbind(ST24Q01,ST24Q02,ST24Q03))) df2 <- tibble::rownames_to_column(df2, "row_names") colnames(df2)[1] <- c("Item") # 关键:添加center=2参数,指定高低分组分界 cana2 <- likert(summary = df2, center = 2) plot(cana2)
自定义分组(可选)
如果不想按默认的前半后半分组,可手动合并列生成低/高分组后再调用函数:
library(dplyr) # 示例:将类别1设为低,2-4设为高 df2_custom <- df2 %>% mutate(Low = `1`, High = `2` + `3` + `4`) %>% select(Item, Low, High) cana3 <- likert(summary = df2_custom) plot(cana3)
内容的提问来源于stack exchange,提问作者Rodrigo Alberto Salas Portugue
相关产品推荐
相关产品推荐

