在R中,Likert中的错误:所有项目(列)必须具有相同数量的级别

5

我的数据:

        Q5         Q6          Q7
1   Not Agree   Neutral     Not Agree
2   Not Agree   Neutral     Neutral
3   Not Agree   Agree       Agree
4   Not Agree   Agree       Neutral
5   Neutral     Not Agree   Neutral
6   Not Agree   Agree       Neutral
7   Not Agree   Neutral     Neutral
8   Neutral     Agree       Neutral
9   Agree       Neutral     Not Agree
10  Neutral     Agree       Neutral

Q567[1:3] <- lapply(Q567[1:3], factor, levels= c("Agree", "Neutral", "Not Agree"), ordered = TRUE)

likert(Q567) %>%
  plot(type = "bar")

我的数据长这样
What my data looks like

我已经将它们转换为具有级别的因子,但为什么我仍然会收到错误提示?

Error in likert(Q567) : All items (columns) must have the same number of levels

1
欢迎来到 Stack Overflow。请使此问题可以重现,包含一个纯文本格式的示例数据,例如从 dput(yourdata) 的输出。我们无法从图片中复制/粘贴数据,也无法了解其结构。 - neilfws
3个回答

15

我曾遇到同样的问题,发现我正在处理的数据集是一个tibble,而不是data.frame:

data <- as.data.frame(data) 

对我有帮助,问题得到了解决。


1
这是一个巨大的时间节省器,应该标记为答案。将来出现问题时,这也将是我尝试的第一件事。 - Resource

0
这些答案(as.data.frame,lapply with factor levels)对我没有起作用。事实证明,并不是所有的变量都是因子,有些是有序的。所以一个简单的data <- data %>% mutate_at(cols, factor)对我有效。

0

您只将数据框的前三列编码为因子,但是却将整个数据框传递给likert函数。 likert函数期望在Q567中的变量为因子。因此我认为您的数据框中还有其他不是因子的列,这可能导致错误。

您应该这样做:

likert(Q567[,1:3]) %>% 
  plot(type = 'bar')

它仍然显示为“likert(Q567 [,1:3])中的错误:所有项目(列)必须具有相同数量的级别”。 - Grace Li
你在尝试上述操作之前,是否先运行了 Q567[1:3] <- lapply(Q567[1:3], factor, levels= c("Agree", "Neutral", "Not Agree"), ordered = TRUE) - LMc
是的,我做了,但当我执行summary(data)时,它似乎有多个层级。我不明白为什么还是会出错。 - Grace Li
你能用 dput(head(Q567)) 发布一段数据片段吗? - LMc

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