Добавьте строки со значением = 0, чтобы иметь одинаковое количество строк по группе dplyr R

#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