按R中指定的不规则间隔拆分xts对象

时间:2015-07-18 13:08:34

标签: r split time-series xts

我想将每日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对象?

1 个答案:

答案 0 :(得分:3)

您可以使用.indexmday获取xts对象中每个观察的月中某天。然后使用cut定义要拆分的间隔。

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