指定一周的数字(时间序列)

时间:2017-12-15 22:28:21

标签: r time-series

我目前有以下数据;

> head(total)
     ID    WEEK    QTY   SHOP   EUR   KEY       COL
1: 1123539 1147     1     GR    2.39  652159 10090100003
2: 3102228 1129     1     GR    2.15  257871 10090100003
3: 3321265 1129     1     GR    2.15  257871 10090100003
4: 3321265 1122     1     GR    2.15  257871 10090100004
5: 1120774 1151     1     GR    2.39  213290 10090100005
6: 1145763 1157     1     GR    2.39  213290 10090100005

> tail(total)
     ID    WEEK    QTY   SHOP   EUR   KEY       COL
1: 1133538 1728     1     GK    3.19 9999879 825277200104
2: 1133538 1728     1     GK    3.19 9999879 825277200104
3: 1141960 1691     1     GK    3.29 9999879 825277200104
4: 1302364 1729     1     GK    3.19 9999879 825277200104
5: 1808485 1714     1     GK    3.29 9999879 825277200104
6: 1808485 1720     1     GK    3.19 9999879 825277200104

我正在尝试为WEEK列指定日期。

数据从WEEK 1114开始,01/01/2001(据我的计算而言)

数据在WEEK 24/12/2017 - 30/12/2017

结束

周翻译定义如下(excel计算);

在括号中,我将公式粘贴到Excel工作表中。

 A             B                               C
    Week       starting on                       ending on
    1479    Dec 31, 200 (=(A2+4157)*7-5)        Jan 6, 2008 (=(A2+4157)*7+1)
    1480    Jan 7, 2008                         Jan 13, 2008
    1481    Jan 14, 2008                        Jan 20, 2008
    1482    Jan 21, 2008                        Jan 27, 2008

    Sys Start date                   WEEK
    septiembre 3, 1979 (03/09/1979)  1 (=ROUND((E2+2)/7;0)-4157)

在R中我试图将WEEK数字设置为一周的开始日期

因此,例如WEEK 1147应该对应August 20, 2001August 26, 2001的日期

非常感谢任何帮助。

我尝试将数据设置为时间序列,我在一年的时间内取得了成功但多年没有成功(感谢Aurélien提供的帮助)。

library(lubridate)
inds <- seq(as.Date("2001-01-01"), as.Date("2012-12-30"), by = "week")
set.seed(25)
w <- lubridate::week(ymd("2001-01-01","2012-12-30"))
y <- lubridate::year(ymd("2001-01-01","2012-12-30"))
myts <- ts(total$WEEK,
           start = c(y[1],w[1]),
           end = c(y[2],w[2]),
           frequency = 52)

1 个答案:

答案 0 :(得分:1)

library(lubridate)

dat = read.table("clipboard", header = TRUE)

> head(dat)
        ID WEEK QTY SHOP  EUR    KEY         COL
1: 1123539 1147   1   GR 2.39 652159 10090100003
2: 3102228 1129   1   GR 2.15 257871 10090100003
3: 3321265 1129   1   GR 2.15 257871 10090100003
4: 3321265 1122   1   GR 2.15 257871 10090100004
5: 1120774 1151   1   GR 2.39 213290 10090100005
6: 1145763 1157   1   GR 2.39 213290 10090100005

ref_date = as.Date("2001-01-01")

dat$DATE = ref_date + weeks(dat$WEEK - 1114)

> dat
        ID WEEK QTY SHOP  EUR    KEY         COL       DATE
1: 1123539 1147   1   GR 2.39 652159 10090100003 2001-08-20
2: 3102228 1129   1   GR 2.15 257871 10090100003 2001-04-16
3: 3321265 1129   1   GR 2.15 257871 10090100003 2001-04-16
4: 3321265 1122   1   GR 2.15 257871 10090100004 2001-02-26
5: 1120774 1151   1   GR 2.39 213290 10090100005 2001-09-17
6: 1145763 1157   1   GR 2.39 213290 10090100005 2001-10-29