tidyverseのtibble
の行を整数範囲で伸ばす方法です。seq
関数で作成した適当な整数範囲をtibble
にして、full_join
関数で結合することで行を伸ばしています。full_join
の左側に整数範囲のtibble
を指定すれば順番が指定されるので、ついでに昇順並び替えと欠損値埋めもされます。
require(tidyverse) df1 <- tribble( ~a, ~b, ~c, 1, 1, 1, 2, 2, 2, 5, 5, 5, 7, 7, 7) df1 # # A tibble: 4 x 3 # a b c # <dbl> <dbl> <dbl> # 1 1 1 1 # 2 2 2 2 # 3 5 5 5 # 4 7 7 7 df2 <- full_join(tibble(a=seq(1:10)), df1) df2 # # A tibble: 10 x 3 # a b c # <dbl> <dbl> <dbl> # 1 1 1 1 # 2 2 2 2 # 3 3 NA NA # 4 4 NA NA # 5 5 5 5 # 6 6 NA NA # 7 7 7 7 # 8 8 NA NA # 9 9 NA NA # 10 10 NA NA
また、left_join
をfull_join
の代わりに使うことで整数範囲以外の行を除去できます。この例では特に変化しません。
require(tidyverse) df1 <- tribble( ~a, ~b, ~c, 1, 1, 1, 2, 2, 2, 5, 5, 5, 7, 7, 7) df1 # # A tibble: 4 x 3 # a b c # <dbl> <dbl> <dbl> # 1 1 1 1 # 2 2 2 2 # 3 5 5 5 # 4 7 7 7 df2 <- left_join(tibble(a=seq(1:10)), df1) df2 # # A tibble: 10 x 3 # a b c # <dbl> <dbl> <dbl> # 1 1 1 1 # 2 2 2 2 # 3 3 NA NA # 4 4 NA NA # 5 5 5 5 # 6 6 NA NA # 7 7 7 7 # 8 8 NA NA # 9 9 NA NA # 10 10 NA NA