R:根据多列的最高日期对数据框进行子集化

R: Subset a data frame based on higest date for multiple columns

我有一个大法相框,大概是这样的:

Location          Date         code     total_cases   total_vaccinations
Afghanistan       2022-04-23     NA          5.00               NA
Afghanistan       2022-04-22     3           3.00                2
Afghanistan       2022-04-21     2           3.00               NA
Albania           2022-04-24     3           9.00               NA
Albania           2022-04-23     NA          9.00               NA
Albania           2022-04-22     5           7.00               NA
Albania           2022-04-21     7           3.00               NA
Bolivia           2022-04-24     2           NA                  1
Bolivia           2022-04-23     3           3.00                0
........

我的问题是尝试制作一个新的数据框,其中将包含每个国家一次,并且每行将包含最新的值 * 如果可用的话,这不是 NA *。对于上面的 table 结果应该是这样的:

Location          Date      code     total_cases   total_vaccinations
Afghanistan   2022-04-23     3           5.00                2
Albania       2022-04-24     3           5.00                NA
Bolivia       2022-04-24     2           3.00                1

到目前为止我试过:

  new_data <- main_data %>%
  group_by(Location) %>%
  arrange(desc(Date)) %>%
  filter(date==max(Date))

但这不起作用。愿意提供任何帮助。

可能的解决方案,基于tidyverse

library(tidyverse)

df %>% 
  group_by(Location) %>% 
  arrange(Date) %>% 
  fill(-Date, .direction="down") %>% 
  slice_max(Date) %>% 
  ungroup

#> # A tibble: 3 × 5
#>   Location    Date        code total_cases total_vaccinations
#>   <chr>       <chr>      <int>       <dbl>              <int>
#> 1 Afghanistan 2022-04-23     3           5                  2
#> 2 Albania     2022-04-24     3           9                 NA
#> 3 Bolivia     2022-04-24     2           3                  1