Удалите недихотомические столбцы в R - PullRequest
1 голос
/ 13 июля 2020

Мне труднее всего использовать функцию для условного удаления столбца в R, если значения не являются двоичными (например, 0 или 1). Для проведения статистического анализа мне нужно, чтобы все столбцы были дихотомическими, и мне нужна функция, которую можно применить к нескольким dfs. Пока что я, кажется, могу найти только результаты, удаляющие строки ...

Например, если один df1 имеет 3 столбца (col1, col2 и col3), но col3 имеет более двух различных значений, Я бы хотел это удалить. Точно так же, если в df2 было 5 столбцов и только 1 из этих столбцов был дихотомическим, я бы хотел удалить все четыре, и так далее и так далее.

В некоторых сообщениях предлагалось удалить их по имени, но проблема в том, что Мне нужно запустить это на сотнях фреймов данных, поэтому определение каждого столбца и их удаление вручную не будет оптимальным.

В настоящее время я пробовал:

data %>% select_if(~ is.numeric(.) && all(between (., 0, 1)))

Это, к сожалению, не работает и я получаю несколько ошибок. Кроме того, я не уверен, сохраняются ли при этом столбцы с NA (но я бы хотел сохранить и эти столбцы!)

Есть ли у кого-нибудь предложения? Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 13 июля 2020

Как насчет этого:

dichotomous <- function(x) all(x[!is.na(x)] %in% c(0,1))
dichotomous2 <- function(x) length(unique(x[!is.na(x)])) %in% c(2,1)

df %>%
    select_if(dichotomous)

df %>%
    select_if(dichotomous2)

dichotomous() предназначен для переменных с горячим кодированием (или фиктивных) - т.е. 1 - 0. dichotomous2() означает действительно дихотомию, то есть есть два различных значения.

...