首页 > 解决方案 > 有没有一种简单的方法可以明智地获取频率列?

问题描述

我有一个李克特值列表,值范围从 1 到 5。每个可能的响应可能出现一次,每列不止一次或根本不出现。我有几列和几行,每一行对应一个参与者,每一列对应一个问题。没有NA数据。

例子:

c1 c2 c3
1 1 5
2 2 5
3 3 4
3 4 3
2 5 1
1 3 1
1 5 1

目标是按列计算答案选项的频率,从而对它们进行比较。

所以结果表应该是这样的:

- c1 c2 c3
1 3 1 3
2 2 1 0
3 2 2 1
4 0 1 1
5 0 2 2

我知道如何为一列执行此操作,并且可以使用 来查看频率apply(ds, 1, table),但我无法将其放入表格中以进一步使用。

谢谢!

标签: rfrequencylikert

解决方案


您可以tablesapply-

sapply(df, function(x) table(factor(x, 1:5)))

#  c1 c2 c3
#1  3  1  3
#2  2  1  0
#3  2  2  1
#4  0  1  1
#5  0  2  2

dplyr如果您愿意,也可以使用此方法。

library(dplyr)
df %>% summarise(across(.fns = ~table(factor(., 1:5))))

推荐阅读