Binary column identification

I would like to identify binary columns in data.frame.

For example, this table

my.table <-read.table(text="a,b,c 0,2,0 0.25,1,1 1,0,0", header=TRUE, as.is=TRUE,sep = ",") 

will give FALSE, FALSE, TRUE

+10
source share
2 answers
 apply(my.table,2,function(x) { all(x %in% 0:1) }) 

(or

 apply(my.table,2,function(x) { all(na.omit(x) %in% 0:1) }) 

if you want to allow NA values)

+14
source

If you want to accept binary columns with NA in them, the following should do the trick:

 is.binary <- function(v) { x <- unique(v) length(x) - sum(is.na(x)) == 2L } my.table <- data.frame(a=11:15, b=c(T,F,T,NA,T), c=c('foo',NA,'bar','bar','foo')) vapply(my.table, is.binary, logical(1)) # abc #FALSE TRUE TRUE 

... or if you accept only 0.1, NA:

 is.binary <- function(v) { x <- unique(v) length(x) - sum(is.na(x)) == 2L && all(x[1:2] == 0:1) } 
+4
source

All Articles