1

在 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”的数量,但前提是“0”出现在同一行的第 1 列中。我知道做类似事情的唯一功能是table,但我认为它不能检查另一列;它只能排除正在检查的数据中的值。(如果我错了,请纠正我。)我尝试在互联网上搜索,但我只遇到不相关的问题。

谁能帮我找到解决这个问题的功能?

4

4 回答 4

3

你可以这样做:

sum(MAT[,2]==1 & MAT[,1]==0)
于 2013-07-10T09:02:26.980 回答
3

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

MAT[ MAT[,1] == 0, ]
table( MAT[ MAT[,1] == 0, ] )
于 2013-07-10T09:02:44.327 回答
2

这将为您提供以下行:

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

length重要的是这种模式出现了多少次。

于 2013-07-10T09:03:22.643 回答
0

您可以使用table

table(MAT[,2]==1 & MAT[,1]==0)
FALSE  TRUE 
    4     1 
于 2013-07-10T09:24:51.067 回答