i和j相等的实例的R计数

时间:2014-08-29 03:56:52

标签: r count multiple-columns

我正在尝试获取两列中的值相等的实例计数。但是,我的等式不起作用。

有人可以指出哪里出错了吗?

count<-0 
for (i in 1:length(v1)){
  for (j in 1:length(v2)){
    if (i == j){
      count <- count+ 1 }
  }
}

3 个答案:

答案 0 :(得分:1)

这是因为您正在比较索引(i == j)而不是每个单元格的内容(v1 [i]和v2 [j])。你应该这样写:

    count<-0 
for (i in 1:length(v1))
{
    for (j in 1:length(v2))
    {
        if (v1[i] == v2[j])
        {
            count <- count+ 1 
        }
    }
}

答案 1 :(得分:1)

一些示例数据:

set.seed(42)
v1 <- sample(0:1, 3, TRUE)
#[1] 1 1 0
v2 <- sample(0:1, 3, TRUE)
#[1] 1 1 1

从接受的答案来看,你想要这个:

sum(outer(v1, v2, "=="))
#[1] 6

请注意,此解决方案将比双for循环快得多。但是,它需要更多的内存,这可能会成为大型矢量的一个问题(因为它会计算一个随矢量长度增长的矩阵)。

答案 2 :(得分:0)

我不确定你问的是什么。如果数据框中有两列,并且您想知道这些值相同的次数,那么这可行...

a<-1:10
b<-c(2,2,4,2,5,6,1,2,9,10)
df<-data.frame(a,b)

sum(df$a == df$b)   #[1] 5

我回答说,我可能完全忽略了你的问题......

我想看看上面的评论,你的问题更多的是要知道一个列/变量的值出现在另一个列/变量的多少次 - 上面已经发布了很多解决方案