2016-06-22 27 views
0

之間的數字我有兩個時間變量,尋找失蹤時間兩個時間變量

time1 
6/15/16 8:00 
6/15/16 9:00 
6/15/16 10:00 
6/16/16 8:00 
6/16/16 9:00 
6/17/16 8:00 
6/18/16 8:00 
6/18/16 8:30 
6/18/16 9:10 
6/19/16 8:00 
6/20/16 8:00 
6/20/16 11:00 

time2 
6/15/16 7:58 
6/16/16 8:03 
6/16/16 9:01 
6/17/16 8:00 
6/18/16 8:02 
6/19/16 8:00 
6/20/16 8:00 

我想找到兩個時間變量之間的最接近的時間。我想保留一些邊界,例如4分鐘。如果兩次之間的時間差小於或等於4分鐘,我想將它們等同起來,否則我想要計算在極限之間有多少不相等的值。我的樣本輸出應該是這樣的,

time1    time2  time difference number of values missed 
6/15/16 8:00 6/15/16 7:58  2       2 
6/16/16 8:00 6/16/16 8:03  3       0 
6/16/16 9:00 6/16/16 9:01  1       0 
6/17/16 8:00 6/17/16 8:00  0       0 
6/18/16 8:00 6/18/16 8:02  2       2 
6/19/16 8:00 6/19/16 8:00  0       0 
6/20/16 8:00 6/20/16 8:00  0       1 

當時間1和時間2被等同於和時差是兩個,錯過變量會顯示沒有這個值的數量的計數值的數量之間的差異分鐘當前行與下一行匹配的匹配項。

我發現很難把它代碼。任何人都可以提出一些想法來開始或以任何方式解決這個問題嗎?

感謝

回答

2

您的數據:

times1 <- structure(c(1466002800, 1466006400, 1466010000, 1466089200, 1466092800, 
1466175600, 1466262000, 1466263800, 1466266200, 1466348400, 1466434800, 
1466445600), class = c("POSIXct", "POSIXt"), tzone = "") 

times2 <- structure(c(1466002680, 1466089380, 1466092860, 1466175600, 1466262120, 
1466348400, 1466434800), class = c("POSIXct", "POSIXt"), tzone = "") 

這是否你想要做什麼?

library(dplyr) 
expand.grid(time1 = times1, time2 = times2) %>% 
    mutate(
    diff = abs(difftime(time1, time2, units = "min")) 
    ) %>% 
    filter(diff <= 4) %>% 
    arrange(time1) %>% 
    mutate(
    missed = match(time1, times1), 
    missed = c(diff(missed) - 1, 
       length(times1) - tail(missed, n=1)) 
) 
#     time1    time2 diff missed 
# 1 2016-06-15 08:00:00 2016-06-15 07:58:00 2 mins  2 
# 2 2016-06-16 08:00:00 2016-06-16 08:03:00 3 mins  0 
# 3 2016-06-16 09:00:00 2016-06-16 09:01:00 1 mins  0 
# 4 2016-06-17 08:00:00 2016-06-17 08:00:00 0 mins  0 
# 5 2016-06-18 08:00:00 2016-06-18 08:02:00 2 mins  2 
# 6 2016-06-19 08:00:00 2016-06-19 08:00:00 0 mins  0 
# 7 2016-06-20 08:00:00 2016-06-20 08:00:00 0 mins  1 
+0

非常感謝!我猜這個效果很好,當他們都在同一個數據集。我有兩個不同的數據集,都需要與州,地鐵,日期分組,然後檢查上述情況。對不起,沒有具體提前。你能給我一些想法嗎? – haimen

+0

我不知道您的實際數據是如何構成的:我的解決方案的數據與您問題的數據完全相同。 – r2evans