如何过滤或子集R中的特定日期和时间间隔? Lubridate?

时间:2015-05-28 20:07:41

标签: r datetime filtering posixct lubridate

我有一个由两列组成的数据集。日期时间列和具有数值的列。它是一个简单的数据集,所以我没有附上它..

我需要做的是过滤或子集与班级时间表相对应的数据,这样我就可以得到一个数据集/数据框,其中包含日期时间值和数值,用于课程讲座时仅限。

班级时间表与一周中的每一天不同,例如周一8:00-9.50,10:30-11:30,14.50-15:50。周二10:30-11:30,14.10-15.30,周三......等等。

知道我怎么能这样做吗?

我通常将datetime-values转换为POSIXct格式,但最近我读到了关于lubridate。

我仍然不确定如何有效地使用所有这些标准进行分组。

也许我应该先根据工作日对数据进行子集化。 然后根据讲座时间对不同的工作日进行分组......

希望有人可以帮助我。

BTW:数据是针对2014年的所有数据的,所以当课程还有假期时,我实际上必须避免数据...

2 个答案:

答案 0 :(得分:1)

将班级间隔转换为interval中的lubridate班级。然后基于测试日期是否在区间中的子集...

> a <- new_interval(Sys.time(), Sys.time() + 120)
> Sys.time() %within% a
[1] TRUE

答案 1 :(得分:0)

我会试试这个,其中D $ Time是POSIXct格式:

# Create column with weekday
D$Weekday <- D$Time
D$Weekday <- weekdays(as.Date(D$Time))

# Subset weekdays
MO <- subset(D, D$Weekday == "Monday")
head(MO)
TU <- subset(D, D$Weekday == "Tuesday")
WE <- subset(D, D$Weekday == "Wednesday")
MO <- subset(D, D$Weekday == "Thursday")
MO <- subset(D, D$Weekday == "Friday")
MO <- subset(D, D$Weekday == "Saturday")

# Subset lecture of weekday
MO_L1 <- subset(MO, format(MO$Time, "%H:%M:$S") > "07:55:00" &
              format(MO$Time, "%H:%M:$S") < "09:30:00")
head(MO_L1)
tail(MO_L1)
MO_L2 <- subset(MO, format(MO$Time, "%H:%M:$S") > "10:55:00" &
              format(MO$Time, "%H:%M:$S") < "11:30:00")

最后将所有子集组合到一个新数据集......