行の補完

概要

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
Sponsored Link