我有一个庞大的数据框架 . 我想过滤所有值等于1的列 .
这是我的数据的一个例子 .
A = c(1,2,3,4,5,6,1,1,1,1,1,1,2,3,1,4,5,6,1,1,1,1,1,1,2,3,4,1,3,3,1,1,1,1,1,1)
M <- matrix(A, ncol = 6, nrow = 6, byrow = F)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 2 1 2 1
[2,] 2 1 3 1 3 1
[3,] 3 1 1 1 4 1
[4,] 4 1 4 1 1 1
[5,] 5 1 5 1 3 1
[6,] 6 1 6 1 3 1
期望的输出如下:
[,1] [,2] [,3]
[1,] 1 2 2
[2,] 2 3 3
[3,] 3 1 4
[4,] 4 4 1
[5,] 5 5 3
[6,] 6 6 3
我想使用dplyr或其他R函数的过滤函数 . 你知道我怎么能这样做吗?谢谢
2 回答
您可以使用
colMeans(M == 1)
获取等于1
的每列的百分比,然后选择那些百分比不是1
的列(即100%) .如果你有一个数据框,
dplyr
解决方案是使用select_if
请注意,如果您的数据具有
NA
值,则colMeans
和any
都有一个na.rm
参数 .不确定你的意思,我会同时提供 .
Matrix
Data Frame