Я был заинтересован в вашей проблеме, поэтому создал некоторые данные и попытался решить проблему, но сам столкнулся с некоторой путаницей, а затем разместил свой вопрос, который, я думаю, является тем, что вы просите, но более общим. Вы можете увидеть ответ здесь: How can I tell if a time point exists between a set of before and after times
Мое сообщение генерирует то, во что я верю, это то, с чего вы начинаете, и проверенный ответ - это то, что, я считаю, вы ищете. Полный код приведен ниже. Вам необходимо будет установить zoo
и IRanges
. Кроме того, я сделал это в версии 2.15.3. IRanges
не установлен правильно в 3.0.0.
## package installation
source("http://bioconductor.org/biocLite.R")
biocLite("IRanges")
install.packages("zoo")
## generate the emtek and hidenic file data
library(zoo)
date_string <- paste("2001", sample(12, 10, 3), sample(28,10), sep = "-")
time_string <- c("23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26",
"23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26")
entry_emtek <- strptime(paste(date_string, time_string), "%Y-%m-%d %H:%M:%S")
entry_emtek <- entry_emtek[order(entry_emtek)]
exit_emtek <- entry_emtek + 3600 * 24
emtek_file <- data.frame(emtek_id = 1:10, entry_emtek, exit_emtek)
hidenic_id <- 110380:110479
date_string <- paste("2001", sample(12, 100, replace = TRUE), sample(28,100, replace = T), sep = "-")
time_string <- rep(c("23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26",
"23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26"),10)
hidenic_time <- strptime(paste(date_string, time_string), "%Y-%m-%d %H:%M:%S")
hidenic_time <- hidenic_time[order(hidenic_time)]
hidenic_file <- data.frame(hidenic_id, hidenic_time)
## Find the intersection of emtek and hidenic times. This part was done by user: agstudy
library(IRanges)
## create a time intervals
subject <- IRanges(as.numeric(emtek_file$entry_emtek),
as.numeric(emtek_file$exit_emtek))
## create a time intervals (start=end here)
query <- IRanges(as.numeric(hidenic_file$hidenic_time),
as.numeric(hidenic_file$hidenic_time))
## find overlaps and extract rows (both time point and intervals)
emt.ids <- subjectHits(findOverlaps(query,subject))
hid.ids <- queryHits(findOverlaps(query,subject))
cbind(hidenic_file[hid.ids,],emtek_file[emt.ids,])
Добро пожаловать в S.O. Это хорошая идея, когда вы задаете вопрос о публикации воспроизводимого примера, иллюстрирующего вашу ситуацию. Пожалуйста, прочитайте: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Chargaff
Необходимость предложить воспроизводимый код и данные особенно TRUE, если вы используете значения даты и времени , Тот факт, что вы предлагаете не ISO-даты, предполагает, что вы, возможно, даже не начали понимать классы datetime. –