r - R如何在一行中查找重复项
问题描述
我在 R 中有一个非常大的数据集,其中包含 1797 个观察值(行)和 24 个变量(列),对应于通过 EPFL 社区进行的一项调查。
受访者被问及他们执行 23 种环保行为的频率,他们以相对的比例回答,导致得分在 1(从不)到 5(非常频繁)之间。
我想检查每行内的重复值,以查看人们是否认真地随机回答(例如,某人有很多“3”值)。
因此,我想每行检索这些重复项,您知道我该怎么做吗?
谢谢 :)
解决方案
您可以使用该tidyverse
方法。
样本数据:
set.seed(123)
df <- data.frame(id = c(1:5),
q1 = sample(1:5, 5, replace = TRUE),
q2 = sample(1:5, 5, replace = TRUE),
q3 = sample(1:5, 5, replace = TRUE),
q4 = sample(1:5, 5, replace = TRUE),
q5 = sample(1:5, 5, replace = TRUE),
q6 = sample(1:5, 5, replace = TRUE),
q7 = sample(1:5, 5, replace = TRUE),
q8 = sample(1:5, 5, replace = TRUE),
q9 = sample(1:5, 5, replace = TRUE),
q10 = sample(1:5, 5, replace = TRUE))
require(tidyverse)
df %>%
gather(question, value, -id) %>%
group_by(id) %>%
#Give you the count for each answer
count(value) %>%
ungroup() %>%
#In addition, you can calculate the prop. of the same answer out of the 10 questions.
mutate(prop = n / 10)
输出:
id value n prop
1 1 1 3 0.3
2 1 2 1 0.1
3 1 3 1 0.1
4 1 4 1 0.1
5 1 5 4 0.4
6 2 2 2 0.2
7 2 3 4 0.4
8 2 4 3 0.3
9 2 5 1 0.1
10 3 1 1 0.1
11 3 2 1 0.1
12 3 3 4 0.4
13 3 4 3 0.3
14 3 5 1 0.1
15 4 2 5 0.5
16 4 3 2 0.2
17 4 4 1 0.1
18 4 5 2 0.2
19 5 1 4 0.4
20 5 2 1 0.1
21 5 3 1 0.1
22 5 4 1 0.1
23 5 5 3 0.3
推荐阅读
- python - for 循环中的 pandas 无法附加从 selenium 获取的字典
- mysql - 使用 MySQL 中的存储过程使用一个表中的数据来更新另一个表的列
- matlab - 使用带有明亮“网格”叠加层的 MATLAB 进行图像处理(细胞计数和属性分析)
- javascript - 材质-UI 集
- twilio - Twilio 验证 CustomerFriendlyName 失败
- microsoft-graph-api - Graph API:将 doc 文件转换为 docx
- java - 删除/过滤空值,如果它包含在字符串中
- python - 将结果集导出为 CSV
- java - android中谷歌地图的缩放范围是多少
- flutter - 为什么我的通用扩展方法需要动态而不是具体类型?