library(tidyverse)
library(lubridate)
library(magrittr)
Восстановите ваши данные
df <- tibble(
Times = c("05-03-2018 09:00:00", "05-03-2018 09:01:26",
"05-03-2018 09:04:28", "05-03-2018 09:07:05",
"05-03-2018 09:09:05"),
value = c(1, 2, 1, 2, 1)
)
код
Разобрать вашу Times
переменную в datetime
df$Times %<>% parse_datetime("%d-%m-%Y %H:%M:%S")
Создать новую переменную join
, которая усекается до минуты
df %<>% mutate(join = floor_date(Times, unit = "minute"))
Создайте новый фрейм данных с одной переменной, также называемой join
и содержащей каждую минуту в вашем диапазоне
all <- tibble(
join = seq(as_datetime(first(df$Times), as_datetime(last(df$Times)), by = 60)
)
Объединить оба фрейма данных
result <- left_join(all, df)
Добавьте «пропущенные минуты» в переменную Times
result$Times[is.na(result$Times)] <- result$join[is.na(result$Times)]
Заменить NA
на 0
result$value[is.na(result$value)] <- 0
Удалите переменную join
result %>%
select(- join)
Результат
# A tibble: 10 x 2
Times value
<dttm> <dbl>
1 2018-03-05 09:00:00 1
2 2018-03-05 09:01:26 2
3 2018-03-05 09:02:00 0
4 2018-03-05 09:03:00 0
5 2018-03-05 09:04:28 1
6 2018-03-05 09:05:00 0
7 2018-03-05 09:06:00 0
8 2018-03-05 09:07:05 2
9 2018-03-05 09:08:00 0
10 2018-03-05 09:09:05 1