ネストされたデータセットで、因子変数を 1 つのレベル (NA を除く) で削除する必要があります。「drop_fixed_factors」の下の関数は、因子レベルの数を評価する際に NA を 1 つのレベルと見なします。A==Y の場合、B のレベルが 2 つ (A、NA) ではなく 1 つ (A) になるように修正するにはどうすればよいですか?
df <- tibble::tribble(
~A, ~B,
"X", "A",
"X", "B",
"Y", "A",
"Y", NA_character_,
"Z", "A",
"Z", "B",
"Z", NA_character_,
"K", "A",
"K", "A",
"L", NA_character_,
"L", NA_character_,
)
df$B <- as.factor(df$B)
dfgrp <- df %>%
group_by(A) %>%
nest()
drop_fixed_factors <- function(x) {
x %>% discard(~is.factor(.x) & length(unique(.x))<2)
}
dfgrp1 <- dfgrp %>%
mutate(data_1 = map(data, ~drop_fixed_factors(.x)))
dfgrp1
dfgrp1$data_1[[2]]
目的の出力には、グループ A == "Y" の変数 B があってはなりません。