我有一个流量,降水量和时间的数据集作为POSIXct。我试图将那些在前两个小时内没有降水的记录分组,这是晚上(就我的目的而言,比如说在晚上10点到凌晨4点之间)。
数据集是“完整的”,因为有小时记录,即使流量和沉降是na,所以我可以转换为时间序列。我很确定我可以用循环来解决这个问题,但我想做得更好。
示例数据集是:
sample <- structure(list(flow = c(1.4838542618848, 1.68681348430786, 1.49091679298032,
0.904015076235029, 1.67419864019143, 1.39869975622123, 0.797317388543118,
1.34068054355126, 2.68070195855211, 2.27260130448352),
rain = c(0.1,0.2, NA, NA, NA, NA, NA, NA, NA, NA),
datetime = structure(c(1104523200, 1104526800, 1104530400, 1104534000,
1104537600, 1104541200, 1104544800, 1104548400, 1104552000, 1104555600),
tzone = "GMT", class = c("POSIXct", "POSIXt"))), .Names = c("flow","rain",
"datetime"),row.names = c(NA, 10L), class = "data.frame")
感谢任何想法!
答案 0 :(得分:3)
pre2prec <- filter(is.na(sample$rain),c(0,1,1),sides=1)==2
night <- as.POSIXlt(sample$datetime)$hour > 22 & as.POSIXlt(sample$datetime)$hour < 4
sample[pre2prec & night,]
很遗憾,您没有为时间值设置时区。 as.POSIXct
然后使用当前系统的时区。由于我在欧洲,显然你不是,你的数据集不包含任何夜间值。