在R中使用不同级别的Likert分组

7
我想使用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
3个回答

6
与第一个答案相同,但现在是关于组的函数。
foo[2:4] <- lapply(foo[2:4], factor, levels=1:10)
likt <- likert(foo[,c(2:4)], grouping = foo$car)
plot(likt)

Fig


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)

-1

实际上,您的底层级别是相同的,您只需要告诉数据框它们的存在:

foo[2:4] <- lapply(foo[2:4], factor, levels=1:9)

然后你就可以绘图了。(但是grouping参数的工作原理仍然是个谜 - 从该包的帮助中并不清楚。)

likt <- likert(foo[,c(2:4)])
plot(likt)

enter image description here


在CRAN手册中,有一个叫做nlevels的参数似乎可以完成相同的工作。但我找不到正确使用它的方法。这个答案是正确的方法。 - jazzurro
@Andrie。非常有帮助!应该是levels=1:10吧?我认为添加分组变量也可以:likt <- likert(foo[,c(2:4)], grouping = foo$car)。 - Ruthger Righart
@RuthgerRighart 可能吧。我根本无法让分组变量起作用(虽然我可能使用的是过时的软件包版本)。 - Andrie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接