【发布时间】:2016-07-25 17:43:58
【问题描述】:
我在 R 工作。我有一个日期序列,我想指定每个特定日期是学期时间还是学校假期。我计划使用数据框列来执行此操作,其中每一行都标记为“假日”或“学期”
我的方法是创建一个时间序列并使用向量单独指定每个假期日期;第一个元素是假期的开始日期,第二个元素是假期的结束日期。
然后我创建一个 if-or 语句来测试时间是否在向量中指定的任何假日日期内。
到目前为止,这是我的代码:
start <- as.POSIXlt("2015-10-10 00:00:00")
end <- as.POSIXlt("2016-03-31 00:00:00")
DateSeq <- seq(from=start, to=end, by="mins")
#Holidays defined using a vector with by start and end date
H1 <- c("2015-10-26", "2015-11-3") #October half term
H2 <- c("2015-12-16", "2016-01-05") #Christmas holiday
H3 <- c("2016-02-15", "2016-02-19") #Feb half term
H4 <- c("2016-03-24", "2016-03-31") #Easter holiday
date_table <- data.frame(Time = DateSeq)
if ((round(date_table$Time, units = "days")== H1[1] <> H1[2]) | (round(date_table$Time, units = "days") == H2[1] <> H2[2])) {
date_table$Holiday <- "Holiday"
} else {
date_table$Holiday <- "Term"
}
如您所见,此代码不起作用,只是将所有行标记为“Term”。
因此我想知道以下几点:
如何在假日向量中指定日期范围,以便在 if 语句中使用?
这是否是最好的使用方法?我对 R 很陌生,我正在考虑替代方案,例如为学期和假期创建一组单独的序列,然后将它们拼接在一起。然而,这种方法似乎很繁琐,但会感谢您的想法。
感谢您的帮助。
【问题讨论】: