插入空行,其中列中的值在数据框中不连续或在 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))
。
假设我必须遵循以下合成数据:
> 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))
。