假设我的数据框由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行。
你能帮助我吗?
答案 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"))})