gpt4 book ai didi

r - 如何在R中总结5分钟的间隔

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

我有一个包含 6 个不同站点的每分钟降水记录的数据集。我想对每个站每 5 分钟进行一次总结。
这些是我的数据集的前 5 行(我总共有 17280 行):

  P_alex P_hvh P_merlijn P_pascal P_thurlede P_tosca                date
0 0 0 0 0 0 2011-06-27 22:00:00
0 1 5 2 0 0 2011-06-27 22:01:00
0 0 0 0 0 0 2011-06-27 22:02:00
0 6 2 3 0 0 2011-06-27 22:03:00
0 0 0 0 0 0 2011-06-27 22:04:00

我试图在互联网上寻求帮助,但找不到对我有帮助的答案。

我还需要每小时求和,为此我使用了以下代码,但是如果您想进行其他求和,则此代码无用
uur_alex = tapply(disdro$P_alex, as.POSIXct(trunc(disdro$date, "hour")), sum)

现在我想要一个代码,我可以用它来做不同的求和,所以 5 分钟(如问题所示),但也是半小时。
我希望有人可以帮助我。

最佳答案

cut与日期时间对象配合得非常好,因此,可用于创建您希望聚合的 5 分钟间隔。下面是一个例子:

首先,一些示例数据:

set.seed(1)
mydf <- data.frame(P_alex = sample(0:5, 40, replace = TRUE),
P_hvh = sample(0:3, 40, replace = TRUE),
date = as.POSIXct("2011-06-27 22:00:00") + 60 * 0:39)
list(head(mydf), tail(mydf))
# [[1]]
# P_alex P_hvh date
# 1 1 3 2011-06-27 22:00:00
# 2 2 2 2011-06-27 22:01:00
# 3 3 3 2011-06-27 22:02:00
# 4 5 2 2011-06-27 22:03:00
# 5 1 2 2011-06-27 22:04:00
# 6 5 3 2011-06-27 22:05:00
#
# [[2]]
# P_alex P_hvh date
# 35 4 1 2011-06-27 22:34:00
# 36 4 3 2011-06-27 22:35:00
# 37 4 3 2011-06-27 22:36:00
# 38 0 1 2011-06-27 22:37:00
# 39 4 3 2011-06-27 22:38:00
# 40 2 3 2011-06-27 22:39:00

现在,执行聚合。在以下示例中,我们聚合原始数据集中的所有列,但从数据集中删除“日期”变量(使用 mydf[setdiff(names(mydf), "date")])。
# Aggregate all columns by the intervals created with cut.
# For the dataset, we drop the original date column since
# it is no longer needed here. Our function is "sum"
aggregate(. ~ cut(mydf$date, "5 min"),
mydf[setdiff(names(mydf), "date")],
sum)
# cut(mydf$date, "5 min") P_alex P_hvh
# 1 2011-06-27 22:00:00 12 12
# 2 2011-06-27 22:05:00 16 8
# 3 2011-06-27 22:10:00 12 5
# 4 2011-06-27 22:15:00 17 6
# 5 2011-06-27 22:20:00 10 8
# 6 2011-06-27 22:25:00 11 8
# 7 2011-06-27 22:30:00 12 7
# 8 2011-06-27 22:35:00 14 13

关于r - 如何在R中总结5分钟的间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14236349/

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