比较R中的时间间隔

时间:2014-12-02 09:35:14

标签: r date

假设我的数据框由3列日期组成:

index <- c("31.10.2012", "16.06.2012")
begin <- c("22.10.2012", "29.05.2012")
end <- c("24.10.2012", "17.06.2012")

index.new <- as.Date(index, format = "%d.%m.%Y")
begin.new <- as.Date(begin, format = "%d.%m.%Y")
end.new <- as.Date(end, format = "%d.%m.%Y")

data.frame(index.new, begin.new, end.new)

我的问题:我想选择(子集)行,其中开始和结束日期的间隔在索引日之前的4天内。这显然只在第2行。

你能帮助我吗?

2 个答案:

答案 0 :(得分:1)

在第一种情况dates.new[1]>dates.new[2]和第二种情况dates.new[3]<dates.new[4]中,您表达问题的方式很混乱。把事情做好:

interval1 = c(dates.new[2], dates.new[1])
interval2 = c(dates.new[3],dates.new[4])

如果你想检查interval2 CONTAINS interval1:

all.equal(findInterval(interval1, interval2),c(1,1))

答案 1 :(得分:0)

请告诉我这是否有效,这是你想要的

library("timeDate")

index <- c("31.10.2012", "16.06.2012")
begin <- c("22.10.2012", "29.05.2012")
end <- c("24.10.2012", "17.06.2012")

index.new <- as.Date(index, format = "%d.%m.%Y")
begin.new <- as.Date(begin, format = "%d.%m.%Y")
end.new <- as.Date(end, format = "%d.%m.%Y")

data <- data.frame(index.new, begin.new, end.new)

apply(data, 1, function(x){paste(x[1]) %in% paste(timeSequence(x[2], x[3], by = "day"))})