我想使用Likert包,也可以按变量分组并绘制结果。问题是我想要可视化的变量有不同的级别。有办法解决这个问题吗?
一个简单的例子来说明我的问题:
library(reshape)
library(likert)
foo <- data.frame(car = rep(c("Toyota", "BMW", "Ford"), times = 10),
satisfaction = c(1,3,4,7,7,6,2,3,5,5,5,2,4,1,7),
quality = c(1,1,3,5,4,3,6,4,3,6,6,1,7,2,7),
loyalty = c(1,1,3,5,4,3,9,4,3,10,6,1,7,2,8) )
foo[1:4] <- lapply(foo[1:4], as.factor)
likt <- likert(foo[,c(2:4)], grouping = foo$car)
plot(likt)
错误消息:
Error in likert(foo[, c(2:4)], grouping = foo$car) :
All items (columns) must have the same number of levels
答案 0 :(得分:3)
与第一个答案相同,但现在作为群组的功能。
foo[2:4] <- lapply(foo[2:4], factor, levels=1:10)
likt <- likert(foo[,c(2:4)], grouping = foo$car)
plot(likt)
答案 1 :(得分:2)
嗯我不能添加评论,直到我获得更多的声望点,所以我打破了“回应其他答案”的指导 - 但我不希望像我这样的其他R新手浪费我刚刚计算的时间原来问题中的那一行:
library(reshape)
打破了Ruthger提供的答案。
所以生成Ruthger的情节所需的代码就是(我使用R 3.3.1测试了这个代码,并遵循https://github.com/jbryer/likert底部的likert安装说明):
library(likert)
foo <- data.frame(car = rep(c("Toyota", "BMW", "Ford"), times = 10),
satisfaction = c(1,3,4,7,7,6,2,3,5,5,5,2,4,1,7),
quality = c(1,1,3,5,4,3,6,4,3,6,6,1,7,2,7),
loyalty = c(1,1,3,5,4,3,9,4,3,10,6,1,7,2,8) )
foo[2:4] <- lapply(foo[2:4], factor, levels=1:10)
likt <- likert(foo[,c(2:4)], grouping = foo$car)
plot(likt)
答案 2 :(得分:0)
您的基础水平实际上是相同的,您只需告诉您的数据框存在它们:
foo[2:4] <- lapply(foo[2:4], factor, levels=1:9)
然后你就可以了。 (但grouping
argumnent的工作原理仍然是个谜 - 在这个包的帮助下,这一点并不清楚。
likt <- likert(foo[,c(2:4)])
plot(likt)