Набор данных временного ряда R - Дата и время задержки - Нерегулярные периоды данных - PullRequest
0 голосов
/ 27 августа 2018

Я борюсь с набором данных, который включает дату и время .Я хочу построить новые столбцы, такие как same_period_previous_week и same_period_previous_day .

Я прочитал несколько ответов здесь, в Stackoverflow, но не смог это исправить.

Вот код для воссоздания моего набора данных:

structure(list(date = structure(c(3L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 1L), .Label = c("8/19/2018", "8/25/2018", "8/26/2018" ), class = "factor"), time = c(9L, 10L, 11L, 12L, 10L, 11L, 12L, 10L, 11L, 12L), value = c(2L, 15L, 25L, 35L, 10L, 20L, 30L, 7L, 14L, 21L)), .Names = c("date", "time", "value"), class = "data.frame", row.names = c(NA, -10L))

, который выглядит следующим образом:

date       time value
8/26/2018   9   2
8/26/2018   10  15
8/26/2018   11  25
8/26/2018   12  35
8/25/2018   10  10
8/25/2018   11  20
8/25/2018   12  30
8/19/2018   10  7
8/19/2018   11  14
8/19/2018   12  21

Я пытался использовать dplyr ,сначала упорядочение набора данных, затем группирование it и создание столбца lagged .Это мой код:

df <- df %>% arrange(date, time)
df_tmp <- df %>% group_by(date, time) %>% mutate(lag_1day = lag(value, n = 1, default = NA))

Новый столбец (lag_1day) просто заканчивается несколькими NA.

Я надеюсь получить в результате следующее:

date    time    value   lag_1day
8/26/2018   9   2       NA
8/26/2018   10  15      10
8/26/2018   11  25      20
8/26/2018   12  35      30
8/25/2018   10  10      7
8/25/2018   11  20      14
8/25/2018   12  30      21
8/19/2018   10  7       NA
8/19/2018   11  14      NA
8/19/2018   12  21      NA

Обратите внимание, что для первой строки есть NA, поскольку в 9 часов утра предыдущего дня соответствующее значение отсутствует.

Имеет ли значение, если я расположу их в порядке возрастания или убывания на первом шаге?

Спасибо в ожидании!

1 Ответ

0 голосов
/ 27 августа 2018

Попробуй вот так.Я думаю, что вы были почти там.

library(dplyr)

df$date <- as.Date(df$date, '%m/%d/%Y')

df %>%
  arrange(time, date) %>% 
  group_by(time) %>%
  mutate(lag_1day = lag(value, n = 1, default = NA)) %>% 
  arrange(desc(date, time))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...