1

ネストされたデータセットで、因子変数を 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 があってはなりません。

4

1 に答える 1