如何将多列从二进制数据转换为一列?

How do I convert multiple columns into one from Binary data?

我的数据每年(10 年)有 3 次调查,其中 1 表示存在,0 表示不存在。子集看起来像这样

x <- structure(c(0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 
                 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 
                 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 
                 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1), 
               .Dim = c(4L, 3L, 4L))

我想将这三列折叠成一列,这样在任何调查中每一行都有 1,在最后显示 1,否则显示 0。

折叠数组的第二维 apply:

apply(x, c(1L, 3L), function(y) as.integer(any(as.logical(y))))
##      [,1] [,2] [,3] [,4]
## [1,]    0    0    0    0
## [2,]    1    1    1    1
## [3,]    0    1    1    1
## [4,]    1    1    1    1

结果是一个 [site, year] 矩阵。

我们可以使用 max

apply(x, c(1, 3), FUN = max)
     [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    1    1    1    1
[3,]    0    1    1    1
[4,]    1    1    1    1