如果您想快速计算多个Likert项目的计数或比例,并在数据框中获得输出,您可能会喜欢
psych
包中的
psych::response.frequencies
函数。
让我们创建一些数据(请注意,没有9):
df <- data.frame(item1 = sample(1:7, 2000, replace = TRUE),
item2 = sample(1:7, 2000, replace = TRUE),
item3 = sample(1:7, 2000, replace = TRUE))
如果您想要计算每个类别中的
比例。
psych::response.frequencies(df, max = 1000, uniqueitems = 1:9)
你会得到以下内容:
1 2 3 4 5 6 7 8 9 miss
item1 0.1450 0.1435 0.139 0.1325 0.1380 0.1605 0.1415 0 0 0
item2 0.1535 0.1315 0.126 0.1505 0.1535 0.1400 0.1450 0 0 0
item3 0.1320 0.1505 0.132 0.1465 0.1425 0.1535 0.1430 0 0 0
如果你想要计数,你可以乘以样本大小:
psych::response.frequencies(df, max = 1000, uniqueitems = 1:9) * nrow(df)
您将获得以下内容:
1 2 3 4 5 6 7 8 9 miss
item1 290 287 278 265 276 321 283 0 0 0
item2 307 263 252 301 307 280 290 0 0 0
item3 264 301 264 293 285 307 286 0 0 0
一些注意事项:
- 默认的最大值是10。因此,如果你有超过10个响应选项,就会出现问题。否则,在你的情况下,以及许多Likert项目的情况下,你可以省略
max
参数。
uniqueitems
指定可能的值。如果所有的值都在至少一个项目中出现,那么这个值将从数据中推断出来。
- 我认为这个函数只适用于数字数据。因此,如果你的力量表类别编码为“强烈反对”等,它就不会起作用。
tabulate(0:1)
或tabulate(-50000:1)
(猜猜为什么参数如此不同时输出相同)。Tabulate适用于您的特殊情况(您恰好有一个从1开始的“Likert”量表,并且对因子有效(因为按惯例,级别被编码为从1开始的正连续整数)。它将无法处理字符向量或零和负值。 - lebatsnokdata
中没有任何5,则tabulate
也不会显示它。 - AugSB