插入空行,其中列中的值在数据框中不连续或在 R 中为 tibble

Insert empty rows where values in a column are non-sequential in a data frame or tibble in R

假设我必须遵循以下合成数据:

> set.seed(1)
> weeknumber = c(1:3, 6:8, 12:15)
> value = sample(10:20, length(weeknumber), replace = T)
> df = data.frame(weeknumber, value)
> df
   weeknumber value
1           1    12
2           2    14
3           3    16
4           6    19
5           7    12
6           8    19
7          12    20
8          13    17
9          14    16
10         15    10

如何有效地weeknumber 列中非连续的值之间添加额外的空行?所需的输出如下:

   weeknumber value
1           1    12
2           2    14
3           3    16
3           4     0
5           5     0
6           6    19
7           7    12
8           8    19
9           9     0
10         10     0
11         11     0
12         12    20
13         13    17
14         14    16
15         15    10

如果 value 列中的新“0”也是 NA 也可以。

您可以使用 complete -

library(tidyr)
complete(df, weeknumber = full_seq(weeknumber, 1), fill = list(value = 0))

#   weeknumber value
#        <dbl> <dbl>
# 1          1    18
# 2          2    13
# 3          3    16
# 4          4     0
# 5          5     0
# 6          6    10
# 7          7    11
# 8          8    16
# 9          9     0
#10         10     0
#11         11     0
#12         12    20
#13         13    11
#14         14    20
#15         15    12

如果您需要 NA 而不是 0,请使用 complete(df, weeknumber = full_seq(weeknumber, 1))