фильтр по названному вектору в dplyr (R) - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь найти быстрый способ преобразовать двоичную числовую переменную в коэффициент, используя dplyr.

У меня есть набор данных с такой структурой:

library(dplyr)
f<-as_tibble(data.frame(col1=c(1,1,0),col2=c("ham","spam","spam"),col3=c(1,2,8),col4=c(1,0,0)))

На данный момент,Я пытался использовать n_distinct

g<-f %>% select_if(is.numeric) %>% sapply(n_distinct) 

Но я не знаю, как действовать, отфильтровывая только те столбцы с n_distinct == 2.Чтобы было ясно, мой окончательный вывод должен быть:

names(g[g==2])

[1] "col1" "col4"

Есть идеи?Спасибо

1 Ответ

1 голос
/ 17 апреля 2019

Как насчет использования select_if и определения функции, которая проверяет, является ли столбец числовым, а также, является ли количество значений distint точно равным 2. Попробуйте:

f %>% 
  select_if(~n_distinct(.) == 2 & is.numeric(.)) %>% 
  names()

Что дает:

[1] "col1" "col4"
...