首页 > 解决方案 > 仅保留数据框中的某些列,前提是它们符合条件

问题描述

我是编程新手,所以请多多包涵。我有一个包含大约 1500 行和 1000 个变量的数据框。我试图保留只有二进制值的列,即“0”或“1”,也允许使用 NA,但丢弃所有其他不符合此条件的列。有没有办法在事先不知道符合条件的列名的情况下做到这一点?

我已经阅读了dplyr filter()函数以及基本的R子集,但没有一个符合我正在寻找的内容。

标签: r

解决方案


你可以尝试这样的事情:

df <- data.frame(a=1:5,
                 b=c(0,1,0,1,0),
                 c=c(0,1,0,1,NA_real_),
                 d=c(0,1,0,1,2))

is_binary <- function(x){
  all(x %in% c(0,1,NA_real_))
}

df[,sapply(df, is_binary)]

输出:

  b  c
1 0  0
2 1  1
3 0  0
4 1  1
5 0 NA

推荐阅读