删除具有一个因子级别的变量,不包括NA

时间:2018-04-17 22:02:28

标签: r dplyr tidyverse purrr forcats

我需要在嵌套数据集中删除一个级别(不包括NA)的因子变量。 “drop_fixed_factors”下面的函数将NA视为一个级别,同时评估因子级别的数量。帮助我解决这个问题,这样对于A == Y,B有一个等级(A),而不是两个(A,NA)。

state

对于组A ==“Y”,所需的输出不应具有变量B.

1 个答案:

答案 0 :(得分:2)

您可以手动删除NA中的unique值:

drop_fixed_factors <- function(x) {
     x %>% discard(~is.factor(.x) & length(unique(na.omit(.x)))<2)
}

或者,您可以使用dplyr::n_distinct并使用na.rm参数:

drop_fixed_factors <- function(x) {
     x %>% discard(~is.factor(.x) & n_distinct(.x, na.rm = TRUE)<2)
}

两个选项都不会为组“Y”返回任何内容。

dfgrp1
# A tibble: 5 x 3
  A     data             data_1          
  <chr> <list>           <list>          
1 X     <tibble [2 x 1]> <tibble [2 x 1]>
2 Y     <tibble [2 x 1]> <tibble [2 x 0]>
3 Z     <tibble [3 x 1]> <tibble [3 x 1]>
4 K     <tibble [2 x 1]> <tibble [2 x 0]>
5 L     <tibble [2 x 1]> <tibble [2 x 0]>