在R中查找数据帧中重复值的最大数量
我是一个程序员 我有一个名为“narc”的数据框,记录了40个不同的自恋测量问题的答案 看起来是这样的:在R中查找数据帧中重复值的最大数量,r,loops,for-loop,R,Loops,For Loop,我是一个程序员 我有一个名为“narc”的数据框,记录了40个不同的自恋测量问题的答案 看起来是这样的: Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 1723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7231 2 2 2 1 1 2 1 1 2 2 2 2 2 2 1 2 5556 2 2 2 1 2
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16
1723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7231 2 2 2 1 1 2 1 1 2 2 2 2 2 2 1 2
5556 2 2 2 1 2 2 2 1 1 2 2 1 2 2 1 1
1511 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2080 1 1 2 2 1 1 2 2 2 1 1 2 1 2 1 1
1074 2 2 1 1 2 2 2 1 1 1 1 1 2 2 1 2
Q17 Q18 Q19 Q20 Q21 Q22 Q23 Q24 Q25 Q26 Q27 Q28 Q29 Q30
1723 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7231 1 2 2 1 2 1 1 2 2 1 1 1 2 2
5556 1 1 1 1 1 2 1 2 2 1 2 1 2 1
1511 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2080 1 1 1 1 2 1 2 1 1 1 2 1 1 1
1074 2 1 1 1 1 1 2 2 2 1 1 1 2 2
Q31 Q32 Q33 Q34 Q35 Q36 Q37 Q38 Q39 Q40 elapse gender age
1723 0 0 0 0 0 0 0 0 0 0 8 1 23
7231 2 1 1 1 1 2 2 2 2 1 24 1 21
5556 2 1 1 2 1 1 2 2 2 1 33 2 18
1511 2 2 2 2 2 2 2 2 2 2 51 1 16
2080 2 2 1 1 2 1 1 2 2 2 59 1 20
1074 1 1 1 1 1 2 2 1 2 1 60 1 24
score level
1723 0 not
7231 8 not
5556 11 not
1511 17 mildly
2080 21 moderately
1074 14 not
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17
1 1 1 1 2 2 1 2 1 2 2 1 1 1 1 2 1 2
Q18 Q19 Q20 Q21 Q22 Q23 Q24 Q25 Q26 Q27 Q28 Q29 Q30 Q31 Q32
1 2 2 2 1 2 2 1 1 2 1 2 1 1 1 2
Q33 Q34 Q35 Q36 Q37 Q38 Q39 Q40
1 1 1 2 1 1 1 1 2
我还有一个名为“narc.key”的数据框,它的答案与自恋相对应,如下所示:
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16
1723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7231 2 2 2 1 1 2 1 1 2 2 2 2 2 2 1 2
5556 2 2 2 1 2 2 2 1 1 2 2 1 2 2 1 1
1511 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2080 1 1 2 2 1 1 2 2 2 1 1 2 1 2 1 1
1074 2 2 1 1 2 2 2 1 1 1 1 1 2 2 1 2
Q17 Q18 Q19 Q20 Q21 Q22 Q23 Q24 Q25 Q26 Q27 Q28 Q29 Q30
1723 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7231 1 2 2 1 2 1 1 2 2 1 1 1 2 2
5556 1 1 1 1 1 2 1 2 2 1 2 1 2 1
1511 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2080 1 1 1 1 2 1 2 1 1 1 2 1 1 1
1074 2 1 1 1 1 1 2 2 2 1 1 1 2 2
Q31 Q32 Q33 Q34 Q35 Q36 Q37 Q38 Q39 Q40 elapse gender age
1723 0 0 0 0 0 0 0 0 0 0 8 1 23
7231 2 1 1 1 1 2 2 2 2 1 24 1 21
5556 2 1 1 2 1 1 2 2 2 1 33 2 18
1511 2 2 2 2 2 2 2 2 2 2 51 1 16
2080 2 2 1 1 2 1 1 2 2 2 59 1 20
1074 1 1 1 1 1 2 2 1 2 1 60 1 24
score level
1723 0 not
7231 8 not
5556 11 not
1511 17 mildly
2080 21 moderately
1074 14 not
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17
1 1 1 1 2 2 1 2 1 2 2 1 1 1 1 2 1 2
Q18 Q19 Q20 Q21 Q22 Q23 Q24 Q25 Q26 Q27 Q28 Q29 Q30 Q31 Q32
1 2 2 2 1 2 2 1 1 2 1 2 1 1 1 2
Q33 Q34 Q35 Q36 Q37 Q38 Q39 Q40
1 1 1 2 1 1 1 1 2
我想找出哪个问题的自恋答案最多
我解决这个问题的方法是创建一个值向量来记录与每个列的narc.key匹配的行数。然而,我有一些麻烦,如何做到这一点。以下是我目前的代码:
for (i in 1:nrow(narc)){
}
for(x in 1:40){
highest.score<-narc[i]
for(y in 1:40)
if(narc[i,y]==narc.key[1,y]){
for(1中的i:nrow(narc)){
}
对于(1:40中的x){
最高.score这并不奇怪,但您可以创建一个与问题大小相同的答案数据集,只需使用==
(如果您的数据集不是非常大,这应该不会太慢)
编辑:我误读了需求。这个答案表明哪些问题最常见的答案是narc答案。而不是哪个问题的narc答案最多
这里有一种方法。我可以使用管道来简化操作。我有一个包含40列、10行的矩阵——全部随机选择为0、1或2。我使用apply
函数跨列应用,并将响应制成表格。然后,我应用于列表中的每个元素(40,每列一个)函数,which.max
,它将返回表中最高值的索引。然后,我应用于这些列表元素中的每一个(同样,40)然后询问返回值的名称
,which.max
将给我计数最高的响应。最后,我取消列出
,并将它们转换为整数(否则它们是文本)。这可以与narc键进行比较,以查看哪些答案匹配
library(magrittr)
mat = matrix(sample(c(0,1,2),400,replace=T),ncol=40)
output = mat %>%
apply(2,table) %>%
lapply(which.max) %>%
lapply(names) %>%
unlist() %>%
as.integer()
narc.key == output
这样做的一个意外结果是,如果大多数常见问题都有相同的答案,那么您可能会得到第一个答案,而不是两个答案。这似乎对我不起作用,因为narc数据框实际上是huge@HelenaGray比如有多大?您是在出错还是只花了几个小时?维度是什么,是否有NAs?