按组添加行以按组获得相同数量的观察值

adding rows by group to get same number of observations by group

我有一个看似非常简单的问题,但我无法成功地将解决方案应用到与我的情况相似的解决方案中,包括这个问题:

我有一些数据如下所示:

# A tibble: 265 x 4
   anon_ID assistance_date Benefit_1 nth_assistance_interaction
     <int> <chr>           <chr>                          <dbl>
 1       8 2020-04-10      Medical                            5
 2       8 2020-04-13      Medical                           10
 3       8 2020-04-15      Medical                           15
 4       8 2020-04-21      Medical                           20
 5      11 2020-06-17      Housing                            5
 6      11 2020-06-25      Financial                         10
 7      11 2021-01-27      Financial                         15
 8      26 2020-05-18      Legal                              5
 9      26 2021-06-01      Food                              10
10      26 2021-08-02      Utilities                         15
# ... with 255 more rows

我想修改它,使每个 anon_ID 有四个观察值,每个值对应 nth_assistance_interaction 的每个唯一值。当这些变量的实际值不存在时,assistance_dateBenefit_1 的值应为 NA

例如,对于 anon_ID = 11,当 nth_assistance_interaction = 20.

时,这两个变量将具有 NA
# A tibble: 265 x 4
   anon_ID assistance_date Benefit_1 nth_assistance_interaction
     <int> <chr>           <chr>                          <dbl>
 1       8 2020-04-10      Medical                            5
 2       8 2020-04-13      Medical                           10
 3       8 2020-04-15      Medical                           15
 4       8 2020-04-21      Medical                           20
 5      11 2020-06-17      Housing                            5
 6      11 2020-06-25      Financial                         10
 7      11 2021-01-27      Financial                         15
 8      11 NA              NA                                20
 9      26 2020-05-18      Legal                              5
10      26 2021-06-01      Food                              10
11      26 2021-08-02      Utilities                         15
# ... with 255 more rows

这只是我正在努力完成的一个例子。也可能是 anon_ID = 27nth_assistance_interaction 只有一个观察值,因此我需要为它们添加三行。

我该如何着手实现这一目标?提前致谢。

我们可以按'anon_ID'分组,用complete展开数据

library(dplyr)
library(tidyr)
df1 %> 
  group_by(anon_ID) %>% 
  complete(nth_assistance_interaction = c(5, 10, 15, 20)) %>% 
  ungroup