Я пытаюсь complete
фрейм данных для нескольких категориальных переменных и, следовательно, создать согласованный объект временного ряда для каждой комбинации категориальных переменных , присутствующих в данных , используя функцию nesting
.
Вот пример кадра данных -
> dput(df)
structure(list(ds = structure(c(1546300800, 1546387200, 1546473600,
1546560000), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
y = c(40, 40, 40, 40), type = c("a", "a", "a", "b"), city = c("x",
"x", "x", "y"), hid = c(1, 2, 2, 3)), row.names = c(NA, -4L
), na.action = structure(c(`5` = 5L), class = "omit"), class = c("tbl_df",
"tbl", "data.frame"))
# Find the date range
min_date <- min(df$ds)
max_date <- max(df$ds)
dates_seq <- seq.POSIXt(from = min_date,
to = max_date,
by = '1 day')
Вот то, что я пытался, и это дает ожидаемые результаты -
df %>%
complete(nesting(type, city, hid),
ds = dates_seq,
fill = list(y = 0))
# A tibble: 12 x 5
# type city hid ds y
# <chr> <chr> <dbl> <dttm> <dbl>
# 1 a x 1 2019-01-01 00:00:00 40
# 2 a x 1 2019-01-02 00:00:00 0
# 3 a x 1 2019-01-03 00:00:00 0
# 4 a x 1 2019-01-04 00:00:00 0
# 5 a x 2 2019-01-01 00:00:00 0
# 6 a x 2 2019-01-02 00:00:00 40
# 7 a x 2 2019-01-03 00:00:00 40
# 8 a x 2 2019-01-04 00:00:00 0
# 9 b y 3 2019-01-01 00:00:00 0
#10 b y 3 2019-01-02 00:00:00 0
#11 b y 3 2019-01-03 00:00:00 0
#12 b y 3 2019-01-04 00:00:00 40
Если я не знаю явно, какиекатегориальные переменные в df
как передать эти столбцы в nesting
?Я предполагаю, что все экземпляры df
содержат как минимум оба столбца ds, y
.
EDIT: Я также попробовал следующее, которое выдает ошибку -
complete(df,
nesting(names(df)[!(names(df) %in% c("ds", "y"))]),
ds = dates_seq,
fill = list(y = 0))