概要
tidyr
パッケージに含まれるcomplete()
は、指定した列を補完する関数です。
関数
tidyr::complete(data, ..., fill = list())
引数 | 指定 | 説明 |
---|---|---|
data | 必須 | データフレーム |
... | 必須 | 補完したい列を指定する |
fill | 任意 | 補完した列の初期値を指定する |
使い方
解説用データフレーム
df <- tibble(
x1 = factor(c('A', 'B', 'D'), levels = c('A', 'B', 'C', 'D', 'E')),
x2 = c('A', 'B', 'D'),
x3 = c(1, 2, 4),
x4 = as.Date(c('2022-04-01', '2022-04-02', '2022-04-04')),
)
> df
# A tibble: 3 x 4
x1 x2 x3 x4
<fctr> <chr> <dbl> <date>
1 A A 1 2022-04-01
2 B B 2 2022-04-02
3 D D 4 2022-04-04
1.型別の補完
1-1.Factor型
# Factor型の列x1を補完する
complete(df, x1)
# A tibble: 5 x 4
x1 x2 x3 x4
<fctr> <chr> <dbl> <date>
1 A A 1 2022-04-01
2 B B 2 2022-04-02
3 C NA NA NA
4 D D 4 2022-04-04
5 E NA NA NA
1-2.文字列型
# 文字列型の列x2を補完する
complete(df, x2 = c('A', 'B', 'C', 'D', 'E'))
# A tibble: 5 x 4
x1 x2 x3 x4
<fctr> <chr> <dbl> <date>
1 A A 1 2022-04-01
2 B B 2 2022-04-02
3 NA C NA NA
4 D D 4 2022-04-04
5 NA E NA NA
1-3.数値型
# 数値型の列x3を補完する
complete(df, x3 = 1:5)
# A tibble: 5 x 4
x1 x2 x3 x4
<fctr> <chr> <dbl> <date>
1 A A 1 2022-04-01
2 B B 2 2022-04-02
3 NA NA 3 NA
4 D D 4 2022-04-04
5 NA NA 5 NA
1-4.日付型
# 日付型の列x4を補完する
complete(df, x4 = seq.Date(as.Date('2022-04-01'), as.Date('2022-04-05'), by = 'day'))
# A tibble: 5 x 4
x1 x2 x3 x4
<fctr> <chr> <dbl> <date>
1 A A 1 2022-04-01
2 B B 2 2022-04-02
3 NA NA NA 2022-04-03
4 D D 4 2022-04-04
5 NA NA NA 2022-04-05
2.列の組み合わせの補完
2-1.ネストなし
# 列x2, x3の全ての組み合わせを補完する
select(df, x2, x3) %>%
complete(x2, x3)
# A tibble: 9 x 2
x2 x3
<chr> <dbl>
1 A 1
2 A 2
4 A 4
1 B 1
2 B 2
4 B 4
1 D 1
2 D 2
4 D 4
2-2.ネストあり
# 列x2, x3の組みと列x4の全ての組み合わせを補完する
select(df, x2, x3, x4) %>%
complete(nesting(x2, x3), x4)
# A tibble: 9 x 3
x2 x3 x4
<chr> <dbl> <date>
1 A 1 2022-04-01
2 A 1 2022-04-02
3 A 1 2022-04-04
4 B 2 2022-04-01
5 B 2 2022-04-02
6 B 2 2022-04-04
7 D 4 2022-04-01
8 D 4 2022-04-02
9 D 4 2022-04-04
3.欠損値の指定
# 列x1を補完し、列x3の欠損値を0に置き換える
select(df, x1, x3) %>%
complete(x1, fill = list(x3 = 0))
# A tibble: 5 x 2
x1 x3
<fctr> <dbl>
1 A 1
2 B 2
3 C 0
4 D 4
5 E 0