r - Classify date/time by tidal states -


i want classify df1 date/time tidal states given in df2. thing df2 gives exact times when tide @ heighest high or low.

i want change classifies tidal height based on being within 3-hour interval either side of high , low tide.

 df1 <- data.frame(date_time = as.posixct(c("2015-09-06 09:00:00 bst", "2015-09-06 09:48:00 bst", "2015-09-06 10:37:00 bst", "2015-09-06 12:00:00 bst", "2015-09-06 12:48:00 bst","2015-09-06 13:35:00 bst")))  > df1             date_time 1 2015-09-06 09:00:00 2 2015-09-06 09:48:00 3 2015-09-06 10:37:00 4 2015-09-06 12:00:00 5 2015-09-06 12:48:00 6 2015-09-06 13:35:00  df2 <- data.frame(date_time = as.posixct(c("2015-09-06 07:09:00 gmt", "2015-09-06 13:18:00 gmt", "2015-09-06 19:52:00 gmt", "2015-09-07 02:01:00 gmt", "2015-09-07 08:28:00 gmt", "2015-09-07 14:43:00 gmt")), tide_state = c("low",  "high", "low",  "high", "low",  "high"))  df2             date_time tide_state 1 2015-09-06 07:09:00        low 2 2015-09-06 13:18:00       high 3 2015-09-06 19:52:00        low 4 2015-09-07 02:01:00       high 5 2015-09-07 08:28:00        low 6 2015-09-07 14:43:00       high 

i've tried using findinterval():

df1$tides <- df2$tide_state[findinterval(x = df1$date_time, vec = df2$date_time)] 

result:

df1           date_time tides 1 2015-09-06 09:00:00   low 2 2015-09-06 09:48:00   low 3 2015-09-06 10:37:00   low 4 2015-09-06 12:00:00   low 5 2015-09-06 12:48:00   low 6 2015-09-06 13:35:00  high 

desired result: (based on tide being 3-hours either side of high , low.

df1  date_time tides     1 2015-09-06 09:00:00   low     2 2015-09-06 09:48:00   low     3 2015-09-06 10:37:00   high     4 2015-09-06 12:00:00   high     5 2015-09-06 12:48:00   high     6 2015-09-06 13:35:00   high 

any appreciated


Comments

Popular posts from this blog

python - How to insert QWidgets in the middle of a Layout? -

python - serve multiple gunicorn django instances under nginx ubuntu -

module - Prestashop displayPaymentReturn hook url -