Добавить строки с определенным значением и заменить отсутствующие значения нулем в R
Это мой фрейм данных:
year year_month month distance weeksum
<chr> <chr> <chr> <fct> <dbl>
1 2017 2017_05 05 15 4
2 2017 2017_05 05 10 1
3 2017 2017_05 05 5 5
4 2017 2017_05 05 0 1
5 2017 2017_06 06 20 7
6 2017 2017_06 06 0 17
7 2017 2017_07 07 10 8
8 2017 2017_07 07 5 3
9 2017 2017_07 07 0 20
10 2017 2017_08 08 20 3
Я хочу добавить строки, чтобы получить полный диапазон моих расстояний (0,5,10,15,20) для каждого месяца в моем фрейме данных и 0 для недели, например:
year year_month month distance weeksum
<chr> <chr> <chr> <fct> <dbl>
1 2017 2017_05 05 20 0
2 2017 2017_05 05 15 4
3 2017 2017_05 05 10 1
4 2017 2017_05 05 5 5
5 2017 2017_05 05 0 1
6 2017 2017_06 06 20 7
7 2017 2017_06 06 15 0
8 2017 2017_06 06 10 0
9 2017 2017_06 06 5 0
10 2017 2017_06 06 0 17
11 2017 2017_07 07 20 0
12 2017 2017_07 07 15 0
13 2017 2017_07 07 10 8
14 2017 2017_07 07 5 3
15 2017 2017_07 07 0 20
Я пытался использовать пакет padr, но не получил того, что хотел.
1 ответ
Вы можете использовать complete
от tidyr
, т.е.
library(tidyverse)
complete(df, distance, nesting(year, year_month, month), fill = list(weeksum = 0)) %>%
arrange(year_month)
который дает,
# A tibble: 20 x 5 distance year year_month month weeksum <int> <int> <fct> <int> <dbl> 1 0 2017 2017_05 5 1 2 5 2017 2017_05 5 5 3 10 2017 2017_05 5 1 4 15 2017 2017_05 5 4 5 20 2017 2017_05 5 0 6 0 2017 2017_06 6 17 7 5 2017 2017_06 6 0 8 10 2017 2017_06 6 0 9 15 2017 2017_06 6 0 10 20 2017 2017_06 6 7 11 0 2017 2017_07 7 20 12 5 2017 2017_07 7 3 13 10 2017 2017_07 7 8 14 15 2017 2017_07 7 0 15 20 2017 2017_07 7 0 16 0 2017 2017_08 8 0 17 5 2017 2017_08 8 0 18 10 2017 2017_08 8 0 19 15 2017 2017_08 8 0 20 20 2017 2017_08 8 3