如果我已经为多个地点(例如销售)设置了数据,并且知道它们每周都增加10%,那么我要如何扩展呢?比如说52个星期(显示每个星期的价值) ?
我以前会在Excel中使用公式执行此操作,以将日期增加7天,然后将每个位置的前一周增加10%。我在时间序列分析中有些猜测-我确实查看了tsibble
和其他一些预测软件包-但找不到任何可以为每周设定的增量提供额外数据的东西。
我提供了一个示例,说明以下现有周的数据情况。
期望的结果将与下面的现有数据相同,但每个位置只需再延长52周,而不是3周。
library(dplyr)
#> Warning: package 'dplyr' was built under R version 3.4.4
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(reprex)
#> Warning: package 'reprex' was built under R version 3.4.4
ex_data <-
tibble::tribble(
~location, ~date, ~sales,
1L, "5/11/2019", 50,
2L, "5/11/2019", 45,
3L, "5/11/2019", 35,
4L, "5/11/2019", 20,
5L, "5/11/2019", 15,
1L, "5/18/2019", 55,
2L, "5/18/2019", 49.5,
3L, "5/18/2019", 38.5,
4L, "5/18/2019", 22,
5L, "5/18/2019", 16.5,
1L, "5/25/2019", 60.5,
2L, "5/25/2019", 54.45,
3L, "5/25/2019", 42.35,
4L, "5/25/2019", 24.2,
5L, "5/25/2019", 18.15
)
答案 0 :(得分:0)
使用dplyr
,您可以首先使用expand.grid
创建整个数据框,包括带有rep
和seq
的日期,然后计算预测值。
df <- expand.grid(location = c("a", "b", "c", "d"),
week = seq(0, 51, 1)) %>%
mutate(date = rep(seq(as.Date("5/11/2019", "%m/%d/%Y"),
as.Date("5/06/2020", "%m/%d/%Y"),
by = "1 week" ), each = 4)) %>%
mutate(value = c(5, 10, 15, 20)) %>%
mutate(fc_value = value*(1.1) ^ week)