gpt4 book ai didi

r - 选择特定时间范围内的行

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

我有一个数据框,如:

TimeStamp                    Category

2013-11-02 07:57:18 AM 0
2013-11-02 08:07:19 AM 0
2013-11-02 08:07:21 AM 0
2013-11-02 08:07:25 AM 1
2013-11-02 08:07:29 AM 0
2013-11-02 08:08:18 AM 0
2013-11-02 08:09:20 AM 0
2013-11-02 09:04:18 AM 0
2013-11-02 09:05:22 AM 0
2013-11-02 09:07:18 AM 0

我想要做的是在 Category 时选择 +-10 分钟的时间范围是“1”。

对于这种情况,因为 category = 12013-11-02 08:07:25 AM , 我想选择 07:57:25 AM to 08:17:25 AM 中的所有行.

处理此任务的最佳方法是什么?

此外,每个时间范围可能有多个“1”。 (实际数据框更复杂,它包含多个不同用户的时间戳,即还有另一列名为“UserID”)

最佳答案

在基础 R 中,没有 lubridate-ing 或其他任何东西(假设您要将 TimeStamp 转换为 POSIXct 对象),例如:

df$TimeStamp <- as.POSIXct(TimeStamp, format = "%Y-%m-%d %I:%M:%S %p")
df[with(df, abs(difftime(TimeStamp[Category==1],TimeStamp,units="mins")) <= 10 ),]

# TimeStamp Category
#2 2013-11-02 08:07:19 0
#3 2013-11-02 08:07:21 0
#4 2013-11-02 08:07:25 1
#5 2013-11-02 08:07:29 0
#6 2013-11-02 08:08:18 0
#7 2013-11-02 08:09:20 0

如果您有多个 1 's,你必须像这样循环:
check <- with(df, 
lapply(TimeStamp[Category==1], function(x) abs(difftime(x,TimeStamp,units="mins")) <= 10 )
)
df[do.call(pmax, check)==1,]

关于r - 选择特定时间范围内的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31038050/

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