Я хотел бы приблизить глубину прилива на основе глубины прилива и отлива для диапазона дат.
date time depth tide_state t_datetime
17/03/2018 20:26 0.43 Low 17/03/2018 20:26
18/03/2018 02:33 2.09 High 18/03/2018 02:33
18/03/2018 08:39 0.45 Low 18/03/2018 08:39
18/03/2018 14:47 2.14 High 18/03/2018 14:47
18/03/2018 20:54 0.41 Low 18/03/2018 20:54
19/03/2018 03:01 2.13 High 19/03/2018 03:01
Я преобразовал df1$t_datetime
в POSIXct.Затем я рассчитал разницу между временами каждого прилива:
df1 %>%
mutate(diff = c(difftime(tail(t_datetime, -1), head(t_datetime, -1)),0))
, что дает мне:
date time depth tide_state t_datetime diff
17/03/2018 20:26 0.43 Low 2018-03-17 20:26:00 6.116667
18/03/2018 02:33 2.09 High 2018-03-18 02:33:00 6.100000
18/03/2018 08:39 0.45 Low 2018-03-18 08:39:00 6.133333
18/03/2018 14:47 2.14 High 2018-03-18 14:47:00 6.116667
18/03/2018 20:54 0.41 Low 2018-03-18 20:54:00 6.116667
19/03/2018 03:01 2.13 High 2018-03-19 03:01:00 6.133333
df1$diff
в часах.
Используя df1$diff
, я хотел бы приблизительно рассчитать глубину прилива в каждый час между перечисленными глубинами.
Я думаю, что мне нужно вычислить разницу в глубинах между приливами, а затем разделитьэто на df1$diff
, чтобы получить изменение глубины за час.
Используя первые два в качестве примера, разница в глубине составляет 1,66 м.Это ~ 0,27 м в час.
В идеале мой результат должен выглядеть следующим образом:
date time depth tide_state t_datetime diff
17/03/2018 20:26 0.43 Low 2018-03-17 20:26:00 6.116667
17/03/2018 21:26 0.70 Low 2018-03-17 21:26:00 6.116667
17/03/2018 22:26 0.97 Low 2018-03-17 22:26:00 6.116667
17/03/2018 23:26 1.24 Low 2018-03-17 23:26:00 6.116667
17/03/2018 00:26 1.51 Low 2018-03-17 00:26:00 6.116667
17/03/2018 01:26 1.78 Low 2018-03-17 01:26:00 6.116667
18/03/2018 02:33 2.09 High 2018-03-18 02:33:00 6.100000
Глубина в вышеприведенном случае немного меньше, так как я только что использовал калькулятор и не включалвсе лишние десятичные дроби.
Я хотел бы добавить дополнительные строки с новой глубиной.Но я не уверен, как я могу сделать это в R, поскольку не все периодические периоды имеют одинаковую продолжительность, и я изо всех сил пытаюсь узнать, как это сделать.
Любая помощь будет очень признательна.
Данные:
structure(list(X = 1:6, date = structure(c(1L, 2L, 2L, 2L, 2L,
3L), .Label = c("17/03/2018", "18/03/2018", "19/03/2018"), class = "factor"),
time = structure(c(5L, 1L, 3L, 4L, 6L, 2L), .Label = c("02:33",
"03:01", "08:39", "14:47", "20:26", "20:54"), class = "factor"),
depth = c(0.43, 2.09, 0.45, 2.14, 0.41, 2.13), tide_state = structure(c(2L,
1L, 2L, 1L, 2L, 1L), .Label = c("High", "Low"), class = "factor"),
t_datetime = structure(1:6, .Label = c("2018-03-17 20:26:00",
"2018-03-18 02:33:00", "2018-03-18 08:39:00", "2018-03-18 14:47:00",
"2018-03-18 20:54:00", "2018-03-19 03:01:00"), class = "factor"),
diff = c(6.11666666666667, 6.1, 6.13333333333333, 6.11666666666667,
6.11666666666667, 6.13333333333333)), class = "data.frame", row.names = c(NA,
-6L))