基于先前列响应的条件求和

时间:2016-11-21 19:39:35

标签: r conditional

我正在使用R来运行调查数据而且我已经碰壁了。我所做的大部分编码都是用Python编写的,我对R来说真的很陌生并且在工作中学习。我试图找到一种方法来计算出在两个地方有多少行具有相同的答案。例如,有多少人回答问题4(这是其自己的专栏)并且“满意”也回答问题7(获得,它自己的专栏)为“满意”。我正在使用readxl输入工作表,并且一直无法获得if,然后循环以我想要的方式运行,如果有的话,我不确定我做错了什么。

1 个答案:

答案 0 :(得分:0)

此函数告诉您有多少行包含至少k个相同值的元素。

nrow_repeat <- function(data,k){
    maxrepeat <- function(row){
        max(table(row))
    }
    sum(apply(data,1,maxrepeat) >= k)
}

如果您想要检查确切的k元素,只需在上面的函数定义中将>=更改为==即可。在下面的示例中,有2行,第5行和第10行,其中包含重复5次或更多次的值。

data
#   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1   5  1  4  1  4  5  1  5  1   4
#2   1  3  2  2  5  3  5  2  3   1
#3   4  4  5  5  3  5  2  4  5   1
#4   2  4  1  1  5  2  5  2  3   2
#5   2  2  1  2  2  4  2  2  3   4
#6   4  1  2  3  2  1  5  1  5   2
#7   5  5  5  3  1  4  3  1  3   3
#8   3  2  3  4  5  1  1  1  2   5
#9   2  1  3  4  1  4  2  2  1   3
#10  4  4  2  3  1  4  4  4  5   2
nrow_repeat(data,5)
#[1] 2

它也适用于角色值。