gpt4 book ai didi

r - 按年份过滤等于或小于阈值

转载 作者:行者123 更新时间:2023-12-04 08:07:52 25 4
gpt4 key购买 nike

我有多年的国家/地区数据,并希望过滤年份等于或小于 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
创建于 2021-02-10 由 reprex package (v0.3.0)
而我想要的结果是:
#>   country year  value
#> <chr> <chr> <dbl>
#> 1 AFG 2005 50.8
#> 2 BEN 2004 49.5
#> 3 CHE 2008 49.9
如何实现这一点(最好使用矢量化解决方案而不是 for 循环)?

最佳答案

仅保留 2008 年或更少的行,arrange数据来自 year并为每个 country选择最后一行。

library(dplyr)

df %>%
filter(year <= 2008) %>%
arrange(country, year) %>%
group_by(country) %>%
slice(n())

# country year value
# <chr> <dbl> <dbl>
#1 AFG 2005 48.5
#2 BEN 2004 49.1
#3 CHE 2008 49.3

关于r - 按年份过滤等于或小于阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66135209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com