条件分岐

概要

dplyrパッケージに含まれるif_else(), case_when(), recode(), recode_factor()は、条件分岐による値を取得する関数です。主にmutate()と併せて使用します。

関連ページ

関数

if_else(condition, true, false, missing = NULL)
case_when(...)
recode(.x, ..., .default = NULL, .missing = NULL)
recode_factor(.x, ..., .default = NULL, .missing = NULL, .ordered = FALSE)
引数指定説明
condition必須if_else()で使用する
条件を指定する
true, false必須if_else()で使用する
TRUE, FLASEの時の返り値を指定する
.x必須recode(), recode_factor()で使用する
条件に使用する列名を指定する
.default任意recode(), recode_factor()で使用する
条件と一致しない時の初期値を指定する
missing
.missing
任意欠損値の代替値を指定する
.ordered任意recode(), recode_factor()で使用する
順序付きfactor型にしたい場合はTRUEを指定する

使い方

解説用データフレーム

df <- tibble(
  x1 = c(1, 2, 3, 4, NA),
)
> df
# A tibble: 5 x 1
     x1
  <dbl>
1     1
2     2
3     3
4     4
5    NA

1.IF文

# 列x1が3未満は'a', 3以上は'b', 欠損値は'c'を列y1に格納する
mutate(df, y1 = if_else(x1 < 3, 'a', 'b', missing = 'c'))
# A tibble: 5 x 2
     x1 y1
  <dbl> <chr>
1     1 a
2     2 a
3     3 b
4     4 b
5    NA c

2.CASE文

# 列x1が1は'a', 2は'b', 3は'c', 欠損値は'e', それ以外は'd'を列y1に格納する
mutate(df, y1 = case_when(
  x1 == 1 ~ 'a',
  x1 == 2 ~ 'b',
  x1 == 3 ~ 'c',
  is.na(x1) ~ 'e',
  TRUE ~ 'd',
))
# A tibble: 5 x 2
     x1 y1
  <dbl> <chr>
1     1 a
2     2 b
3     3 c
4     4 d
5    NA e

3.RECODE文

recode()は、1から順に任意の値に置き換える関数です。

3-1.文字列型

# 列x1が1は'a', 2は'b', 3は'c', それ以外は'd', 欠損値は'e'を列y1に格納する
mutate(df, y1 = recode(x1, 'a', 'b', 'c', .default = "d", .missing = "e"))
# A tibble: 5 x 2
     x1 y1
  <dbl> <chr>
1     1 a
2     2 b
3     3 c
4     4 d
5    NA e

3-2.factor型

# 列x1が1は'a', 2は'b', 3は'c', それ以外は'd', 欠損値は'e'を列y1に格納する
mutate(df, y1 = recode_factor(x1, 'a', 'b', 'c', .default = "d", .missing = "e"))
# A tibble: 5 x 2
     x1 y1
  <dbl> <fctr>
1     1 a
2     2 b
3     3 c
4     4 d
5    NA e

3-3.順序付きfactor型

# 列x1が1は'a', 2は'b', 3は'c', それ以外は'd', 欠損値は'e'を列y1に格納する
mutate(df, y1 = recode_factor(x1, 'a', 'b', 'c', .default = "d", .missing = "e", .ordered = T))
# A tibble: 5 x 2
     x1    y1
  <dbl> <ord>
1     1     a
2     2     b
3     3     c
4     4     d
5    NA     e
Sponsored Link