我有一個數據幀(「觀察」),其格式爲H:M
(「時間」)。在第二個數據幀(「間隔」)中,我的時間範圍由「From」和「Till」變量定義,格式也爲H:M
。以不同時間間隔計算時間戳 - 以跨越午夜的間隔問題
我想統計每個區間內的觀測值的數量。我一直在使用data.table
中的between
,這在包含日期時一直沒有任何問題。
但是,現在我只有時間戳,沒有日期。這導致在跨越午夜(20:00 - 05:59
)的時間間隔中發生的一些問題。這些時間不計入我嘗試過的代碼中。
實例下
interval.data <- data.frame(From = c("14:00", "20:00", "06:00"), Till = c("19:59", "05:59", "13:59"), stringsAsFactors = F)
observations <- data.frame(Time = c("14:32", "15:59", "16:32", "21:34", "03:32", "02:00", "00:00", "05:57", "19:32", "01:32", "02:22", "06:00", "07:50"), stringsAsFactors = F)
interval.data
# From Till
# 1: 14:00:00 19:59:00
# 2: 20:00:00 05:59:00 # <- interval including midnight
# 3: 06:00:00 13:59:00
observations
# Time
# 1: 14:32:00
# 2: 15:59:00
# 3: 16:32:00
# 4: 21:34:00 # Row 4-8 & 10-11 falls in 'midnight interval', but are not counted
# 5: 03:32:00 #
# 6: 02:00:00 #
# 7: 00:00:00 #
# 8: 05:57:00 #
# 9: 19:32:00
# 10: 01:32:00 #
# 11: 02:22:00 #
# 12: 06:00:00
# 13: 07:50:00
library(data.table)
library(plyr)
adply(interval.data, 1, function(x, y) sum(y[, 1] %between% c(x[1], x[2])), y = observations)
# From Till V1
# 1 14:00 19:59 4
# 2 20:00 05:59 0 # <- zero counts - wrong!
# 3 06:00 13:59 2
的一個結束時那些永遠是你的時間間隔,或者這只是一個大一個小例子數據集? – SymbolixAU
更大集合的相同結構 – MLEN
使用'adply'與1的邊距類型會使data.table的使用無關緊要。 –