2017-04-10 41 views
0

不介意看到其他解決方案,但我也不明白爲什麼我得到不完整和錯誤的答案。 (lubricate :: interval出錯)加入時間點在間隔內的數據

例如del_time [1,]不在時間間隔[3,]中。我們的目標是將「狀態」加入del_time,其中時間間隔爲間隔。

示例數據:

library(lubridate) 
library(dplyr) 

ti <- now() 

times <- tibble(time1 = c(ti + 3600, ti + 7200, ti + 10800, ti + 14000), 
        time2 = time1 + 3599, status = c("One", "Two", "Three", "Four")) 

del_time <- tibble(time = times$time1 + 1750) 

代碼:

FUN1 <- function(x,y){ 

    x <- ymd_hms(x) 
    which_int <- x %within% interval(start = y[[1]], end = y[[2]]) 
    out <- as.character(y[which_int, 3]) 
    return(out) 
} 


del_time$status <- apply(del_time[, 1], 1, FUN1, y = times) 
del_time 
+0

你也可以從'dplyr'看看[beetwen](https://www.rdocumentation.org/packages/dplyr/versions/0.5.0/topics/between) – count

+0

%from%from data.table,不知道dplyr有它的版本,謝謝。 – MLEN

回答

0

解決的辦法是:

which_int <- x %within% interval(start = ymd_hms(y[[1]]), end = ymd_hms(y[[2]])) 

不過,我不會介意的替代解決方案。