我有兩個數據幀,一個包含測量值和時間戳,具有開始和結束時間的其它含測量週期:匹配數據
txt1 <- " v1 datetime
23 '2016-02-14 12:00:10'
12 '2016-02-14 12:03:10'
21 '2016-02-14 12:50:00'
52 '2016-02-14 13:01:10'
53 '2016-02-14 13:05:50'
23 '2016-02-14 13:09:25'
95 '2016-02-14 13:20:10'
11 '2016-02-14 13:21:00'
64 '2016-02-14 13:25:12'
41 '2016-02-14 13:45:34'
14 '2016-02-14 13:53:08'
"
txt2 <- " mp start end
1 '2016-02-14 12:00:00' '2016-02-14 12:11:00'
2 '2016-02-14 12:58:00' '2016-02-14 13:13:00'
3 '2016-02-14 13:22:00' '2016-02-14 14:00:00'
"
d1 <- read.table(textConnection(txt1), header = TRUE,
colClasses = c("integer", "POSIXct"))
d2 <- read.table(textConnection(txt2), header = TRUE,
colClasses = c("integer", "POSIXct" ,"POSIXct"))
我想要分配的正確的測量期間每次測量(保留不匹配的行):
" v1 datetime mp
23 '2016-02-14 12:00:10' 1
12 '2016-02-14 12:03:10' 1
21 '2016-02-14 12:50:00' NA
52 '2016-02-14 13:01:10' 2
53 '2016-02-14 13:05:50' 2
23 '2016-02-14 13:09:25' 2
95 '2016-02-14 13:20:10' NA
11 '2016-02-14 13:21:00' NA
64 '2016-02-14 13:25:12' 3
41 '2016-02-14 13:45:34' 3
14 '2016-02-14 13:53:08' 3
"
我目前的做法是使用嵌套的for循環,但我正在尋找一個更有效的方法。
嘗試[foverlaps](https://www.rdocumentation.org/packages/data.table/versions/1.10.4/topics/foverlaps)? –
[範圍和單日期之間的日期合併](https://stackoverflow.com/questions/38379206/date-merging-between-range-and-single-dates/38380091#38380091) –