093-095 if_else, case_when:列内での条件分岐
列内での条件分岐
if_else
dfif <- tibble(num =c(1:10)) dfif <- dfif %>% mutate(bool = num>5)
- if_elseはBooleanを判断して、TRUEとFALSEで処理をわける関数です。
if_else(FALSE, "trueです", "falseです") if_else(c(TRUE,TRUE,FALSE), "trueだよ", "falseだよ") if_else(c(TRUE,NA,FALSE), "trueだよ", "falseだよ", "NAだよ")
- これとmutateを組み合わせると、
dfif %>% mutate(bool = num>4) dfif %>% mutate(bool = num>4) %>% mutate(kekka = if_else(bool, "4より大きいよ", "4より小さいよ"))
- 例では、一度boolというBooleanのベクトルを作っていますが、
dfif %>% mutate( kekka = if_else( num < 3, "<3",">=3" ) ) dfif <- dfif %>% select(-bool)
- でもOKです
dfif %>% mutate( kekka = if_else( num < 3, "0",">=3",NA_character_ ) )
case_when
if_elseはTRUE/FALSEをかえす2条件のみですが、case_whenは複数条件で条件分岐ができます。
<Booleanとなる条件式> ~ <返したい結果>
を繰り返すことで好きな条件で結果を返せます。
dfif %>% mutate(kekka = case_when( num == 1 ~ "one", num == 2 ~ "two", num == 3 ~ "three", TRUE ~ "else" ))