#r #dplyr
#r #dplyr
Вопрос:
У меня есть фрейм данных с группами по странам и строками с датой, в некоторых странах для некоторых дат нет строк, я хотел бы заполнить эти недостающие строки значением 0
Например:
dd <- tibble( region=rep("Aus",8), date=c("2000-11-01","2000-12-01","2001-01-01","2001-02-01","2001-03-01","2001-04-01","2001-05-01","2001-06-01"), value=runif(8))
dd <- bind_rows(dd,tibble( region=rep("Est",6), date=c("2000-11-01","2001-01-01","2001-02-01","2001-04-01","2001-05-01","2001-06-01"), value=runif(6)))
Мне нужно добавить две строки для группы Est
с отсутствующими датами 2000-12-01
2001-03-01
с value=0
Я не могу понять, как сделать это для общего случая, используя dplyr или base
Ответ №1:
dd %>%
pivot_wider(names_from = date, values_fill = 0) %>%
pivot_longer(cols = -region)
что дает:
# A tibble: 16 x 3
region name value
<chr> <chr> <dbl>
1 Aus 2000-11-01 0.313
2 Aus 2000-12-01 0.842
3 Aus 2001-01-01 0.314
4 Aus 2001-02-01 0.757
5 Aus 2001-03-01 0.968
6 Aus 2001-04-01 0.169
7 Aus 2001-05-01 0.697
8 Aus 2001-06-01 0.873
9 Est 2000-11-01 0.132
10 Est 2000-12-01 0
11 Est 2001-01-01 0.0785
12 Est 2001-02-01 0.378
13 Est 2001-03-01 0
14 Est 2001-04-01 0.580
15 Est 2001-05-01 0.536
16 Est 2001-06-01 0.109