2013-07-29 68 views
0

我有一个流量,降水和时间的数据集作为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") 

任何想法是值得赞赏!

回答

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然后使用当前系统的时区。由于我在欧洲,显然你不是,你的数据集不包含任何夜间值。

+0

你知道,这就是我来这里的原因。事实上,我认为会变得一团糟,实际上可以用三行代码完成。 FWIW我编辑了示例数据以更好地展示事物,但您几乎可以将它钉在上面。谢谢! –