【问题标题】:Split xts object by specified irregular intervals in R在 R 中按指定的不规则间隔拆分 xts 对象
【发布时间】:2015-10-08 02:23:27
【问题描述】:

我想将每日 xts 对象拆分为 4 个单独的周,这些周对应于该月的以下几天:1 日至 7 日、8 日至 14 日、15 日至 21 日和 22 日至月底,其中最后一周通常会更长(但没关系!)。

以下是从日期序列创建的 2004 年 1 月 xts 对象的一些示例代码:

week <- seq(from=as.Date("2004-01-01"), to=as.Date("2004-01-31"), by = "day")
x2 <- sample(1:50, 31) # generating 31 random numbers 
January_series <- xts(x2, order.by=week) # create January daily series 

问题是 1 月 1 日不是星期日,所以 split.xts 不一定能满足我的要求。

我最初认为我可以创建四个与上述日子相对应的时间间隔,但我不知道这是否是正确的方法。

有什么方法可以按您创建的间隔拆分 xts 对象吗?

【问题讨论】:

    标签: r split time-series xts


    【解决方案1】:

    您可以使用 .indexmday 获取 xts 对象中每个观察值的月份日期。然后使用cut 定义您要分割的间隔。

    intervals <- cut(.indexmday(January_series), c(0,7,14,21,31), paste0("W",1:4))
    splitlist <- split(January_series, intervals)
    

    【讨论】:

    • .indexmday 中似乎有一个错误。 .indexmday(January_series) 在 R 3.2.1 上给我 31, 1, 2, .... xts 0.9.7。
    • @G.Grothendieck:有,但是it has been fixed
    • @JoshuaUlrich 再次感谢。不过,我确实对此还有另一个问题 - 如果一月系列是一个更大的每日系列,从一月到十二月,按月拆分,并且每个系列都有多个列。所以我必须遍历每一列并将每个月的拆分间隔拆分为上面的几周间隔?
    • @SAMIRSULTANI:我不确定我是否理解。如果你用另一个可重复的例子提出一个新问题,那可能是最好的。
    • @JoshuaUlrich 会的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    相关资源
    最近更新 更多