gpt4 book ai didi

R:数据框根据第一个时间戳选择每个ID的最大行

转载 作者:行者123 更新时间:2023-12-04 12:09:23 24 4
gpt4 key购买 nike

我有一个数据框,其中包含带有时间戳的记录。下面的玩具示例包含一个 ID,该 ID 附加了 2 个基于两个不同时间戳的 SMS。实际上,会有数千个 ID,每个 ID 都有近 80-100 种短信类型和日期

toydf <- data.frame(ID = c(1045937900, 1045937900), 
SMS.Type = c("DF1", "WCB14"),
SMS.Date = c("12/02/2015 19:51", "13/02/2015 08:38"))

我希望能够创建一个新的数据框,它只包含第一个 SMS.Date 甚至最后一个 SMS 类型的记录

我看过使用 duplicated ,我还考虑过按 ID 降序对日期列进行排序,并添加一个新列,将 1 放在 ID 的第一个实例旁边,如果当前 ID 等于前一个 ID,则为 0。我怀疑如果记录数量急剧增加,这会变得很重

有谁知道更优雅的方法 - 也许使用 data.table

谢谢你的时间

最佳答案

尝试

library(dplyr)
toydf %>%
group_by(ID) %>%
arrange(desc(as.POSIXct(SMS.Date, format='%d/%m/%Y %H:%M'))) %>%
slice(1L)

或者使用data.table

library(data.table)
toydf$SMS.Date <- as.POSIXct(toydf$SMS.Date, format='%d/%m/%Y %H:%M')
setkey(setDT(toydf), ID, SMS.Date)[, .SD[.N], ID]

关于R:数据框根据第一个时间戳选择每个ID的最大行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30438766/

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