gpt4 book ai didi

r - 计算指定时间段内值为 1 的总时间

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

我有一个包含两列的数据集。我需要计算在 00:00 到 6:00 之间值大于 1 的总时间(以秒为单位)。我怎样才能在 R 中以最有效的方式做到这一点?这可以使用 dplyr 包来完成吗?我需要以通用方式执行此操作,以便它也可以应用于其他持续时间(6 到 9、9 到 12)。以下是一些示例数据:

+--------------------------------------+
| Timestamp Value |
+--------------------------------------+
| 2015-10-01 00:00:00 300 |
| 2015-10-01 00:00:55 200 |
| 2015-10-01 00:25:10 0 |
| 2015-10-01 01:05:40 876 |
| 2015-10-01 02:05:40 989 |
| 2015-10-01 04:05:40 0 |
| 2015-10-01 05:00:00 600 |
| 2015-10-01 06:00:00 300 |
+--------------------------------------+

因此这里预计持续时间在 00 到 06 之间的输出是 15910 秒。

最佳答案

首先我会解析日期/时间:

dat$Timestamp <- strptime(dat$Timestamp, format="%Y-%m-%d %H:%M:%S")

然后我会使用 difftime 获取每次观察之间的秒数:

secs <- as.numeric(difftime(tail(dat$Timestamp, -1), head(dat$Timestamp, -1),
units="secs"))

最后,我将总结每个间隔中值大于 1 的秒数:

sum(secs[head(dat$Value, -1) > 1])
# [1] 15910

假设你感兴趣的时间边界出现在Timestamp字段,你可以限制到感兴趣的时间范围(开始于begin.time,结束于end.time ) 类似:

dat.subset <- dat[dat$Timestamp >= begin.time & dat$Timestamp <= end.time,]

数据:

dat <- data.frame(Timestamp = c("2015-10-01 00:00:00", "2015-10-01 00:00:55", "2015-10-01 00:25:10", "2015-10-01 01:05:40", "2015-10-01 02:05:40", "2015-10-01 04:05:40", "2015-10-01 05:00:00", "2015-10-01 06:00:00"), Value = c(300, 200, 0, 876, 989, 0, 600, 300))

关于r - 计算指定时间段内值为 1 的总时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974750/

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