过滤dplyr(R)中的命名向量

问题描述 投票:0回答:1

我试图找到一种使用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) 

但我不知道如何通过q​​azxswpoi过滤掉那些列。要清楚,我的最终输出应该是:

n_distinct == 2

任何的想法?谢谢

filter dplyr sapply
1个回答
1
投票

如何使用names(g[g==2]) [1] "col1" "col4" 并定义一个函数来检查列是否为数字以及distint值的数量是否正好为2.尝试:

select_if

哪个给你:

f %>% 
  select_if(~n_distinct(.) == 2 & is.numeric(.)) %>% 
  names()
© www.soinside.com 2019 - 2024. All rights reserved.