如何将多列从二进制数据转换为一列?
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
我的数据每年(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