如何从csv中的自己的调查数据到likert堆积条形图?

时间:2013-10-18 12:38:43

标签: r

很抱歉问这个,

但所有其他问题,甚至是帮助和方法看起来都更加先进,“简单”的事情似乎已经被发现:

我有自己的调查数据。它在Excel中。我的像Likert一样的编码为0-5

  • 0不予考虑
  • 1很低
  • 2低
  • 3中等
  • 4 High
  • 5很高

我将其导出为CSV,标题是问题,每行下面代表一个受访者。

Q1;Q2;Q3;Q4 
0;3;3;2
1;0;3;3
2;0;5;4

这应该是直截了当的,对吧?

我将其导入数据集

DFG <- read.csv("export.csv", headers = TRUE, sep = ";")

我可以通过打印(DFG)看到数据集很好,标题看起来也不错。但那是我走了多远。李克特抱怨

All items (columns) must have the same number of levels
items parameter contains non-factors. Will convert to factors

所有列都有相同数量的数据,58套,没有未答复的项目。

我甚至没有考虑添加分组,我离条形图这么远,我甚至无法让它工作。我错过了什么?

第2步:

将Heather的解决方案应用于

的初始问题之后
DFG <- lapply(DFG, factor, levels = 0:5)
显然,现在R知道Levels(之前没有),我得到了打印(DFG)的结果

$H1.1..founders..education
[1] 3 4 2 2 5 4 4 3 3 4 3 1 2 2 4 4 4 3 3 4 3 3 4 3 3 3 3 2 3 4 3 2 3 4 5
[36] 2 1 2 3 3 5 5 2 3 3 3 2 3 3 3 3 3 0 4 2 4 2 0
Levels: 0 1 2 3 4 5

$H1.2..founders..past.professional.experience
[1] 5 5 5 4 5 5 5 3 3 5 5 3 2 5 4 5 5 4 4 4 3 5 4 4 3 4 3 3 5 5 4 2 4 4 5
[36] 3 5 4 4 4 5 5 4 4 5 4 3 4 5 4 5 4 3 4 3 5 5 4
Levels: 0 1 2 3 4 5

(缩短)

如果我将其更改为

 DFG <- lapply(DFG, ordered, levels = 0:5)

我可以对它运行net_stacked()脚本。耶,快乐!感谢。

1 个答案:

答案 0 :(得分:2)

当您使用read.csv读取数据时,列将作为数字变量读入(因为您没有另外指定)。

您正在使用的功能要求列是因子 - 因为它们不是,它会尝试将它们转换为因子。问题是它不知道每个项目的可能级别为0-5。因此,每列都转换为只有观察到的水平的因子,并且由于没有观察到每个项目的完整水平集,因为水平不同,会出现错误。

要解决此问题,请自行将变量转换为因子:

DFG <- lapply(DFG, factor, levels = 0:5)