Как создать регулярную панель из данных временного ряда неправильной панели - PullRequest
0 голосов
/ 16 февраля 2019

Я хотел бы перейти от нерегулярной структуры данных панели к обычной структуре данных панели, но я изо всех сил пытаюсь это сделать.Любые предложения приветствуются!

Текущая структура данных нерегулярной панели:

trackingid <- as.character(c(1470149111625446735))
timestamp <- as.character(c("2018-06-17", "2018-06-18", "2018-06-19", "2018-06-21", "2018-06-22", "2018-06-23"))
pageimp <- as.numeric(c(8, 1, 3, 4, 2, 3))
dt <- data.frame(trackingid,timestamp, pageimp)

Стремленная структура данных обычной панели:

trackingid <- as.character(c(1470149111625446735))
timestamp <- as.character(c("2018-06-17", "2018-06-18", "2018-06-19", "2018-06-20", "2018-06-21", "2018-06-22", "2018-06-23"))
pageimp <- as.numeric(c(8, 1, 3, 0, 4, 2, 3))
dt <- data.frame(trackingid,timestamp, pageimp)

Обратите внимание, что в моих полных данных у меня будет много трекингидов с различными значениями.неправильные отметки времени.Все предыдущие решения, обсуждаемые до сих пор, только переходили от нерегулярных временных рядов к регулярным временным рядам, не учитывая панельный характер моих данных.

1 Ответ

0 голосов
/ 16 февраля 2019

Может делать:

library(tidyverse)

dt %>%
  mutate(timestamp = as.Date(timestamp)) %>%
  group_by(trackingid) %>%
  complete(timestamp = seq(min(timestamp), max(timestamp), by = "day"), fill = list(pageimp = 0))

Вывод:

# A tibble: 7 x 3
# Groups:   trackingid [1]
  trackingid          timestamp  pageimp
  <fct>               <date>       <dbl>
1 1470149111625446656 2018-06-17       8
2 1470149111625446656 2018-06-18       1
3 1470149111625446656 2018-06-19       3
4 1470149111625446656 2018-06-20       0
5 1470149111625446656 2018-06-21       4
6 1470149111625446656 2018-06-22       2
7 1470149111625446656 2018-06-23       3

В основном вы группируете по trackingid, расширяете ваши данные за день от минимума до максимума timestamp и делаетеиспользование аргумента fill для заполнения чего-либо пропущенного 0. 0. 1010 *

...