从 15 分钟数据中提取每小时数据

Extracting hourly data from 15 minute data

我有一个包含两列的数据框,时间和流量。时间序列的时间间隔是 15 分钟,我想切割这个时间序列,以便输出时间序列具有一致的一小时时间间隔和来自原始数据的每小时时间戳的流量值。如何提取每小时数据?

输入:

structure(list(t = structure(c(1104555600, 1104556500, 1104557400, 
1104558300, 1104559200, 1104560100, 1104561000, 1104561900, 1104562800
), class = c("POSIXct", "POSIXt"), tzone = "EST"), flow = c(18, 
18, 18, 18.125, 18.125, 18.125, 18.125, 18.125, 18.125)), .Names = c("t", "flow"), row.names = c(NA, 9L), class = "data.frame")

对于输出,我想要类似

的东西
time    flow
2005-01-01 00:00:00 18.000
2005-01-01 01:00:00 18.125
2005-01-01 02:00:00 18.125

你没有给出任何例子,但据我了解你只是想保留每一行。

在一个数据集中

time<- c(10,11,12,13,14,15,16,17,18,19)
flow<- c(3,4,5,6,7,8,9,10,11,12)
d <- data.frame(time,flow)

1    10    3
2    11    4
3    12    5
4    13    6
5    14    7
6    15    8
7    16    9
8    17   10
9    18   11
10   19   12

> d[seq(1, NROW(d), by = 4),]

你只保留每四行。

time flow
1   10    3
5   14    7
9   18   11

您可以使用cut 获取每个t 变量所在的小时,然后只取每个cut 组的第一个元素。如果 df 是您的数据框:

aggregate(df, list(cut(df$t,breaks="hour")), FUN=head, 1)[,-2]

#             Group.1   flow
# 2005-01-01 00:00:00 18.000
# 2005-01-01 01:00:00 18.125
# 2005-01-01 02:00:00 18.125

如果您的数据框是:

library(dplyr)
filter(a, grepl(":00:00",t))