Я новичок в программировании, так что потерпите меня. У меня есть фрейм данных примерно с 1500 строками и 1000 переменными. Я пытаюсь сохранить столбцы, которые имеют только двоичные значения, например «0» или «1», также разрешены НП, но отбрасывать все остальные столбцы, не соответствующие этим критериям. Есть ли способ сделать это, не зная заранее имена столбцов, которые соответствуют критериям?
Я прочитал о функции dplyr filter(), а также о base R подмножество, но ни одно не соответствует тому, что я ищу.
filter()
Новые функции в dplyr 1.0.0 предоставляют простое решение этой проблемы: select(.data, where(is.logical)). Где .data - ваш тиббл / фрейм данных (при условии, что ваши переменные имеют тип данных logical, т.е. TRUE / FALSE).
dplyr
select(.data, where(is.logical))
.data
logical
TRUE
FALSE
Вы можете попробовать что-то вроде этого:
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