r - 有没有一种简单的方法可以明智地获取频率列?
问题描述
我有一个李克特值列表,值范围从 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)
,但我无法将其放入表格中以进一步使用。
谢谢!
解决方案
您可以table
在sapply
-
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))))
推荐阅读
- c - 我的模拟没有运行或循环
- java - 设计咨询:从多个类调用方法
- python - 如何匹配和合并熊猫数据框与列表?
- javascript - 我在 JavaScript 的上下文中不理解这个关键字
- ubuntu - Docker 容器创建由 root 拥有的目录,我需要它们由 1000:1000 拥有
- django - Django 客户模板标签在我的生产设置中不起作用
- java - 我的教授在 setter 中跳过了一个变量,他写的代码是不是有错误?
- python - 如果任何其他输入意味着出现问题,我应该如何结束 if-else 块?
- json - $ref 是什么意思?
- android - Inode 和已删除的文件条目