首页 > 解决方案 > R如何在一行中查找重复项

问题描述

我在 R 中有一个非常大的数据集,其中包含 1797 个观察值(行)和 24 个变量(列),对应于通过 EPFL 社区进行的一项调查。

受访者被问及他们执行 23 种环保行为的频率,他们以相对的比例回答,导致得分在 1(从不)到 5(非常频繁)之间。

在此处输入图像描述

我想检查每行内的重复值,以查看人们是否认真地随机回答(例如,某人有很多“3”值)。

因此,我想每行检索这些重复项,您知道我该怎么做吗?

谢谢 :)

标签: rdatabaseduplicatessurvey

解决方案


您可以使用该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

推荐阅读