R言語による医療データ分析

R言語によるデータ分析のオンラインコースを中心に、さまざまなデータ分析について記載してあります。

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"
  ))

まとめ一覧