2015-05-28 12 views
0

我有一个由两列组成的数据集。日期时间列和具有数字值的列。它是一个简单的数据集,所以我没有附加它..如何在R中过滤或子集特定的日期和时间间隔? 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年,所以我实际上是避免了数据上课的时候有假期,以及...

+0

发布迄今为止已尝试的代码,并指定哪些代码不适用于此。看起来像一个简单的“子集”命令可以完成这项工作,一旦数据以有用的方式组织起来 – arvi1000

+0

“它是一个简单的数据集,所以我没有附加它” - 这是最好的附加类型,至少是它。为什么?那么,因为我们不知道有讲座的班级在“日期时间栏和带数值的栏”的背景下意味着什么。这听起来像你有一些辅助数据集,你应该做一个合并。 – Frank

回答

1

Convert类间隔一个intervallubridate。基于如果日期是在间隔的测试然后子集...

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

我会尝试这个,这里d $时间是在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") 

而在最后将所有子集合并到一个新的数据集中...