Используя dplyr
и tidyr
, мы можем объединить столбец даты и времени с unite
, затем создать последовательность каждые 15 минут из min
и max
DATETIME
и получить дату и время в отдельности столбцы.
library(dplyr)
library(tidyr)
df %>%
unite(DATETIME, DATE, REC_TIME, sep = " ", remove = FALSE) %>%
mutate(DATETIME = as.POSIXct(DATETIME, format = "%d-%m-%y %T", tz = "UTC")) %>%
complete(CODE, DATETIME = seq(min(DATETIME), max(DATETIME), by = "15 min")) %>%
mutate(DATE = as.Date(DATETIME), REC_TIME = format(DATETIME, "%T")) %>%
select(-DATETIME) %>%
group_by(CODE) %>%
fill(DIST, TALUK, HOBLI, .direction = "updown")
данные
df <- structure(list(DIST = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "DK", class = "factor"),
TALUK = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("P1",
"P2", "P3", "P4"), class = "factor"), HOBLI = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L), .Label = c("A1", "A2", "A3",
"B1", "B2", "B4"), class = "factor"), CODE = c(1503L, 1503L,
1503L, 1503L, 1503L, 1503L, 1503L, 1503L, 1503L, 515L, 515L,
515L, 515L, 633L, 633L, 633L, 633L, 633L, 633L, 633L, 633L,
633L, 845L, 845L, 845L, 845L, 845L, 845L, 845L, 845L, 789L,
789L, 789L, 789L, 789L, 789L, 789L, 789L, 789L, 801L, 801L,
801L, 801L, 801L, 801L, 801L, 801L, 801L, 801L, 801L, 801L,
801L, 801L, 801L), DATE = structure(c(1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L), .Label = c("01-06-19", "01-07-19", "02-07-19",
"22-08-19", "30-11-19"), class = "factor"), REC_TIME = structure(c(1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 29L, 30L, 31L, 32L, 29L,
30L, 31L, 32L, 33L, 34L, 35L, 1L, 2L, 10L, 11L, 12L, 13L,
14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L,
26L, 1L, 2L, 3L, 4L, 30L, 31L, 27L, 28L, 29L, 30L, 31L, 32L,
33L, 34L, 35L), .Label = c("00:00:00", "00:15:00", "00:30:00",
"00:45:00", "01:00:00", "01:15:00", "01:30:00", "01:45:00",
"02:00:00", "05:30:00", "05:45:00", "06:00:00", "06:15:00",
"06:30:00", "06:45:00", "07:00:00", "07:15:00", "07:30:00",
"07:45:00", "08:00:00", "08:15:00", "08:30:00", "08:45:00",
"09:00:00", "09:15:00", "09:30:00", "21:45:00", "22:00:00",
"22:15:00", "22:30:00", "22:45:00", "23:00:00", "23:15:00",
"23:30:00", "23:45:00"), class = "factor"), RAIN = c(22.5,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24,
24, 24, 29, 32, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 0, 0, 0, 0, 0, 0, 0.5, 0.5, 0.5, 0.5, 0.5,
0.5, 0.5, 2, 5.5, 5.5, 5.5, 5.5, 5.5)), class = "data.frame", row.names = c(NA, -54L))