有条件地计算矩阵中的值

时间:2013-07-10 08:55:47

标签: r

在R中,我想计算矩阵列中出现的不同值的数量,但仅限于另一列中出现某个值。为了澄清,请考虑这个矩阵:

MAT <- matrix(nrow=5,ncol=2, c(1,0,1,1,2,1,1,1,2,0))

矩阵看起来像这样:

 > MAT
     [,1] [,2]
[1,]    1    1
[2,]    0    1
[3,]    1    1
[4,]    1    2
[5,]    2    0

我想在第2列中找到'1'的数量,但只有在同一行的第1列中出现'0'时才会出现。我所知道的唯一一个类似的函数是table,但我认为它不能检查另一个列;它只能排除被检查数据中的值。 (如果我错了,请纠正我。)我试过在互联网上搜索,但我只是遇到无关的问题。

有人可以帮我找到这个问题的功能吗?

4 个答案:

答案 0 :(得分:3)

你可以这样做:

sum(MAT[,2]==1 & MAT[,1]==0)

答案 1 :(得分:3)

您始终可以使用以下条件对矩阵进行子集化:

MAT[ MAT[,1] == 0, ]
table( MAT[ MAT[,1] == 0, ] )

答案 2 :(得分:2)

这将为您提供行:

which(MAT[,1]==0 & MAT[,2]==1)

length就是这种模式发生的次数。

答案 3 :(得分:0)

您可以使用table

table(MAT[,2]==1 & MAT[,1]==0)
FALSE  TRUE 
    4     1