我有一个由两列组成的数据集。日期时间列和具有数值的列。它是一个简单的数据集,所以我没有附上它..
我需要做的是过滤或子集与班级时间表相对应的数据,这样我就可以得到一个数据集/数据框,其中包含日期时间值和数值,用于课程讲座时仅限。
班级时间表与一周中的每一天不同,例如周一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年的所有数据的,所以当课程还有假期时,我实际上必须避免数据...答案 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")
最后将所有子集组合到一个新数据集......