gpt4 book ai didi

r - 如何使用 tidyverse 根据日期/时间时间戳列删除重复记录?右

转载 作者:行者123 更新时间:2023-12-02 01:51:36 24 4
gpt4 key购买 nike

我有一个如下所示的数据集。

library(tidyverse)

data <- structure(list(Timestamp = c("12/7/2021 11:29:15", "12/7/2021 11:29:35",
"12/7/2021 11:59:18", "12/7/2021 12:28:53",
"12/7/2021 13:19:12"),
ID = c(157767, 380925, 319956, 375889, 375889),
Status = c("Yes", "No", "Yes", "No", "Yes")),
row.names = c(NA, -5L), class = c("tbl_df",
"tbl", "data.frame"))

print(data)
> data
# A tibble: 5 x 3
Timestamp ID Status
<chr> <dbl> <chr>
1 12/7/2021 11:29:15 157767 Yes
2 12/7/2021 11:29:35 380925 No
3 12/7/2021 11:59:18 319956 Yes
4 12/7/2021 12:28:53 375889 No
5 12/7/2021 13:19:12 375889 Yes

第 4 行和第 5 行具有相同的 ID。根据时间戳,我可以看到第 5 行是稍后完成的,并且状态已更新。

我是否可以根据时间戳进行过滤,以仅显示数据框中的最新时间戳?我想要的输出如下

  Timestamp              ID Status
<chr> <dbl> <chr>
1 12/7/2021 11:29:15 157767 Yes
2 12/7/2021 11:29:35 380925 No
3 12/7/2021 11:59:18 319956 Yes
4 12/7/2021 13:19:12 375889 Yes

谢谢。

最佳答案

使用dplyr::slice_max你可以这样做:

注意:由于您的 Timestamp 是一个字符,因此我们首先必须将其转换为日期时间才能完成此操作(感谢 @utubun 在评论中指出这一点)

library(dplyr)

data %>%
group_by(ID) %>%
slice_max(as.POSIXct(Timestamp, format = "%d/%m/%Y %H:%M:%S")) %>%
ungroup() %>%
arrange(Timestamp)
#> # A tibble: 4 × 3
#> Timestamp ID Status
#> <chr> <dbl> <chr>
#> 1 12/7/2021 11:29:15 157767 Yes
#> 2 12/7/2021 11:29:35 380925 No
#> 3 12/7/2021 11:59:18 319956 Yes
#> 4 12/7/2021 13:19:12 375889 Yes

关于r - 如何使用 tidyverse 根据日期/时间时间戳列删除重复记录?右,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70265885/

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