gpt4 book ai didi

r - 根据日期列按组获取最新的非 NA 值

转载 作者:行者123 更新时间:2023-12-05 01:23:36 25 4
gpt4 key购买 nike

我有一个包含 country_namedate 和几个列的数据框:column_1column_2 column_3。我正在尝试根据跨多个列的日期提取最新记录。

数据框看起来像这样:

| country_name | date        | column_1| column_2| column_3|
| US | 2016-11-02 | 7.5 | NA | NA |
| US | 2017-09-12 | NA | NA | 9 |
| US | 2017-09-19 | NA | 8 | 10 |
| US | 2020-02-10 | 10 | NA | NA |
| US | 2021-03-10 | NA | NA | 7.3 |
| US | 2021-05-02 | NA | 3 | NA |
| UK | 2016-11-02 | NA | 2 | NA |
| UK | 2017-09-12 | 0.5 | 3 | NA |
.
.

对于美国,所需的输出是:

| country_name | column_1| column_2| column_3|
| US | 10 | 3 | 7.3 |

对于column_1,最新日期的值为10(日期:2020-02-10),column_2 为 3(日期:2021-05-02),column_3 为 7.3(日期:2021-03-10)。我的目标是在多个国家/地区应用此逻辑。我如何实现这一目标?

最佳答案

library(dplyr)
library(tidyr)

df1 %>%
mutate(date = as.Date(date)) %>%
group_by(country_name) %>%
arrange(date) %>%
select(-date) %>%
fill(everything()) %>%
slice(n())

#> # A tibble: 2 x 4
#> # Groups: country_name [2]
#> country_name column_1 column_2 column_3
#> <chr> <dbl> <int> <dbl>
#> 1 UK 0.5 3 NA
#> 2 US 10 3 7.3

数据:

read.table(text = "country_name  date         column_1 column_2 column_3
US 2016-11-02 7.5 NA NA
US 2017-09-12 NA NA 9
US 2017-09-19 NA 8 10
US 2020-02-10 10 NA NA
US 2021-03-10 NA NA 7.3
US 2021-05-02 NA 3 NA
UK 2016-11-02 NA 2 NA
UK 2017-09-12 0.5 3 NA",
header = T, stringsAsFactors = F) -> df1

关于r - 根据日期列按组获取最新的非 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72205344/

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