我有一个包含两列,时间和流量的数据框。时间序列的时间间隔是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
答案 0 :(得分:2)
您可以使用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
答案 1 :(得分:1)
如果您的数据框是:
library(dplyr)
filter(a, grepl(":00:00",t))
答案 2 :(得分:0)
你没有给出任何例子,但据我所知,你只想保留每一排。
在包含
的数据集中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