从时间数据框中删除每周的特定时间和日期
Removing specific times and days every week from time dataframe
学习 R 几个月了,偶然发现了一个我在 Whosebug 上似乎还找不到的问题。我有一个时间范围数据集:
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)
我已经了解了如何删除每天的特定时间,以及如何删除 weekends/holidays 等完整日期,但我想删除每周的子集,特别是每个星期六的 8:00在整个数据集中的每个星期一到 9:00。我尝试通过使用 lubridate(感谢@Christian)对我需要的时间段进行子集化来做相反的事情:
dfc = ymd_hm(df$timestamp)
df[day(dfc) == 2 & hour(dfc) >= 9 | day(dfc) == 7 & hour(dfc) >= 8,]
但似乎没有用。
干杯。
在使用带方括号的 lubridate 时不能进行子集化。相反,它像常规函数一样被调用。尝试更换例如hour[dfc] 和 hour(dfc) 你应该没问题。
编辑:要对范围进行子集化,您需要注意 == 不同于 >=
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
学习 R 几个月了,偶然发现了一个我在 Whosebug 上似乎还找不到的问题。我有一个时间范围数据集:
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)
我已经了解了如何删除每天的特定时间,以及如何删除 weekends/holidays 等完整日期,但我想删除每周的子集,特别是每个星期六的 8:00在整个数据集中的每个星期一到 9:00。我尝试通过使用 lubridate(感谢@Christian)对我需要的时间段进行子集化来做相反的事情:
dfc = ymd_hm(df$timestamp)
df[day(dfc) == 2 & hour(dfc) >= 9 | day(dfc) == 7 & hour(dfc) >= 8,]
但似乎没有用。
干杯。
在使用带方括号的 lubridate 时不能进行子集化。相反,它像常规函数一样被调用。尝试更换例如hour[dfc] 和 hour(dfc) 你应该没问题。
编辑:要对范围进行子集化,您需要注意 == 不同于 >=
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