在 dplyr (R) 中过滤命名向量
filter on named vector in dplyr (R)
我正在尝试找到一种使用 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"
有什么想法吗?
谢谢
如何使用 select_if
并定义一个函数来检查列是否为数字以及不同值的数量是否恰好为 2。尝试:
f %>%
select_if(~n_distinct(.) == 2 & is.numeric(.)) %>%
names()
这给你:
[1] "col1" "col4"
我正在尝试找到一种使用 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"
有什么想法吗? 谢谢
如何使用 select_if
并定义一个函数来检查列是否为数字以及不同值的数量是否恰好为 2。尝试:
f %>%
select_if(~n_distinct(.) == 2 & is.numeric(.)) %>%
names()
这给你:
[1] "col1" "col4"