gpt4 book ai didi

R:唯一(或 dplyr 不同)+ 最近日期

转载 作者:行者123 更新时间:2023-12-03 13:58:24 25 4
gpt4 key购买 nike

我有一个由信息行组成的数据框,其中包括基于不同日期的名称的重复。我想将此 df 过滤为仅包含唯一名称的 df,但如果有机会,还要选择最近发生的事件。我是 dplyr 的忠实粉丝,之前使用过 distinct 和 select 的组合,但文档表明这似乎无法单独完成:

“确定唯一性时要使用的变量。如果给定的输入组合有多行,则只会保留第一行。”

这似乎是一个经常发生的问题,所以我想知道是否有人有任何建议。下面是一个示例 df,它反射(reflect)了我的真实数据将 Names 作为字符类,将 Date 作为 POSIXct,这是我使用 lubridate 包生成的。

structure(list(Name = c("John", "John", "Mary", "John", "Mary", 
"Chad"), Date = structure(c(1430438400, 1433116800, 1335830400,
1422748800, 1435708800, 1427846400), tzone = "UTC", class = c("POSIXct",
"POSIXt"))), .Names = c("Name", "Date"), row.names = c(NA, -6L
), class = "data.frame")

想要的结果是:
structure(list(Name = c("John", "Mary", "Chad"), Date = structure(c(1433116800, 
1435708800, 1427846400), class = c("POSIXct", "POSIXt"), tzone = "UTC")), .Names = c("Name",
"Date"), row.names = c(2L, 5L, 6L), class = "data.frame")

感谢您的帮助。

最佳答案

最简单的方法是

DF %>% arrange(desc(Date)) %>% distinct(Name)

如果您真的希望名称保持相同的顺序,这些也可以使用(感谢@akrun):
DF %>% group_by(Name) %>% slice(which.max(Date))  # @akrun's better idea
DF %>% group_by(Name) %>% filter(Date==max(Date)) # my idea

关于R:唯一(或 dplyr 不同)+ 最近日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31549898/

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