【问题标题】:R: create index for xts time object from calendar week , e.g. 201501 ... 201553R:从日历周为 xts 时间对象创建索引,例如201501 ... 201553
【发布时间】:2018-01-03 10:21:07
【问题描述】:

我知道如何从索引中获取星期,但不知道反过来:如果我有日历周,如何创建索引(在本例中,从 0CALWEEK 为 201501、201502 的 SAP 系统... 201552、201553。

发现这个: How to Parse Year + Week Number in R? 但是需要日期并且不清楚如何设置它,尤其是在年底时(年 - 周 - 日:YEAR-53-01 并不总是存在,因为第 53 周的第一天可能是星期一,那么01(星期日)不在该周。

我可以尝试在相应一周的第一天(通过 SQL)进入源系统,但我认为 R 可能会更容易......

你有什么建议吗?

(一周的第一天并不重要,因为我会以相同的方式创建所有对象,然后合并/绑定它们,然后继续分析。如果 zoo 更容易,我会去)

谢谢!

【问题讨论】:

    标签: r xts zoo


    【解决方案1】:

    问题是所有索引都在 2015-07-29 结束:

    data <- 1:4
    weeks <- c('201501','201502','201552','201553')
    weeks_2 <- as.Date(weeks,format='%Y%w') 
    xts(data, order.by = weeks_2)
    

    [,1]

    2015-07-29 1

    2015-07-29 2

    2015-07-29 3

    2015-07-29 4

    test <- xts(data, order.by = weeks_2)
    index(test)
    

    [1] “2015-07-29” “2015-07-29” “2015-07-29” “2015-07-29”

    【讨论】:

      【解决方案2】:

      你可以使用as.Date()函数,我认为是最简单的方法:

      weeks <- c('201501','201502','201552','201553')
      as.Date(paste0(weeks,'1'),format='%Y%W%w') # paste a dummy day
      ## [1] "2015-01-05" "2015-01-12" "2015-12-28" NA   
      

      地点:

      %W:第 00-53 周,星期一为一周的第一天

      %U:第 01-53 周,周日为一周的第一天

      %w: 工作日 0-6 星期日是 0

      对于今年,第 53 周不存在。如果您想以2015-01-01 开头,只需设置正确的工作日:

      weeks <- c('201500','201501','201502','201551','201552')
      as.Date(paste0(weeks,'4'),format='%Y%W%w')
      ## [1] "2015-01-01" "2015-01-08" "2015-01-15" "2015-12-24" "2015-12-31"
      

      【讨论】:

        【解决方案3】:

        你可以试试 substr() 和 lubridate

        library(lubridate)
        # a number from your list: 201502
        # set the year
        x <- ymd("2015-01-1")
        # retrieve second week
        week(x) <- 2
        x
        [1] "2015-01-08" 
        

        您可以将结果用于您的 Index 或 rownames()。

        一旦您设置了名称,zoo 和 xts 就非常适合时间序列, 请务必从数据框中删除任何带有日期的列

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-30
          • 1970-01-01
          • 1970-01-01
          • 2015-10-30
          • 2018-01-08
          • 2015-09-28
          • 2011-05-16
          • 1970-01-01
          相关资源
          最近更新 更多