从时间数据框中删除每周的特定时间和日期

时间:2017-09-18 09:54:02

标签: r time posixct

一直在学习R几个月,偶然发现了一个我无法在stackoverflow上找到的问题。我有一个时间范围数据集由:

决定
ts <- seq.POSIXt(as.POSIXlt("2014-08-01 15:00"), as.POSIXlt("2017-08-04 19:33"), by="min")
ts <- format.POSIXct(ts,'%Y%m%d %H%M')
df <- data.frame(timestamp=ts)

我已经看到了如何删除每天的特定时间,以及如何删除周末/假日等完整日期,但我希望每周删除子集,特别是每周六8:00到每周9:00星期一整个数据集。我试过反过来,通过使用lubridate对我需要的时间进行分组(感谢@Christian):

dfc = ymd_hm(df$timestamp)
df[day(dfc) == 2 & hour(dfc) >= 9 | day(dfc) == 7 & hour(dfc) >= 8,]

但它似乎没有用。

干杯。

1 个答案:

答案 0 :(得分:0)

当使用带方括号的lubridate时,你不能使用子集。相反,它被称为常规功能。尝试替换例如小时[dfc]与小时(dfc),你应该没事。

编辑:要为您需要注意的范围设置子集==不像&gt; =

edit2:更多指向正确的方向

ts_sat_until_monday = seq.POSIXt(as.POSIXlt("2014-08-02 09:00"), 
as.POSIXlt("2014-08-04 08:00"), by = 1)

unique(day(ts_sat_until_monday))
unique(hour(ts_sat_until_monday))
#what about sunday? up to you