我需要在嵌套数据集中删除一个级别(不包括NA)的因子变量。 “drop_fixed_factors”下面的函数将NA视为一个级别,同时评估因子级别的数量。帮助我解决这个问题,这样对于A == Y,B有一个等级(A),而不是两个(A,NA)。
state
对于组A ==“Y”,所需的输出不应具有变量B.
答案 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]>