【发布时间】:2021-02-11 01:05:07
【问题描述】:
我有多年的国家数据,并且想要过滤每个国家/地区的最后一次观察,其中年份等于或小于 X 年。因此,我希望每个国家/地区都有唯一的行:
library(tidyverse)
df <- tibble("country" = c(rep("AFG", 3), rep("BEN", 3), rep("CHE", 3)),
"year" = c(2001, 2005, 2009, 2001, 2004, 2009, 2000, 2003, 2008),
"value" = rnorm(9, 50))
df %>%
filter(year <= 2008)
#> # A tibble: 7 x 3
#> country year value
#> <chr> <dbl> <dbl>
#> 1 AFG 2001 51.0
#> 2 AFG 2005 49.9
#> 3 BEN 2001 50.2
#> 4 BEN 2004 49.2
#> 5 CHE 2000 50.8
#> 6 CHE 2003 49.0
#> 7 CHE 2008 48.3
由reprex package (v0.3.0) 于 2021-02-10 创建
而我想要的结果是:
#> country year value
#> <chr> <chr> <dbl>
#> 1 AFG 2005 50.8
#> 2 BEN 2004 49.5
#> 3 CHE 2008 49.9
如何实现这一点(最好使用矢量化解决方案而不是 for 循环)?
【问题讨论】: