首页 > 解决方案 > 通过具有匹配给定因子水平的变量/列选择数据框中的变量/列

问题描述

是否可以通过匹配某些因子级别的变量来选择数据框中的变量,根据它们的因子级别(使用或未使用)选择列?我可以按级别或子集进行汇总,可能按行,但我想知道是否可以从数据框中选择列,或者至少列出具有某些因子级别的变量/列。

library(dplyr)
height <- c(132,151,162,139,166,147,122)
    weight <- c(48,49,66,53,67,52,40)
    gender <- c("male","male","female","female","male","female","male")
    gender2 <- c("female","male","male","male","male","female","male")
    genderx <- c("xfemale","malex","malex","male","male","xfemale","xfemale")


    df <- data.frame(height,weight,gender, gender2, genderx) %>% 
      rowid_to_column(., "ID")

类似(或不喜欢)的东西

%>% select (vars(levels ==(c("male", "female")))

标签: rdataframeselectlevels

解决方案


我们可以用select_if

library(dplyr)
df %>% 
    select_if(~ is.factor(.) && all(c("male", "female") %in% levels(.)))

any或者也可以

df %>% 
    select_if(~ is.factor(.) && any(c("male", "female") %in% levels(.)))

推荐阅读