按 R 中指定的不规则间隔拆分 xts 对象
Split xts object by specified irregular intervals in R
我想将每天的 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 对象吗?
您可以使用 .indexmday
获取您的 xts 对象中每个观察值的月份日期。然后使用 cut
定义您要分割的间隔。
intervals <- cut(.indexmday(January_series), c(0,7,14,21,31), paste0("W",1:4))
splitlist <- split(January_series, intervals)
我想将每天的 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 对象吗?
您可以使用 .indexmday
获取您的 xts 对象中每个观察值的月份日期。然后使用 cut
定义您要分割的间隔。
intervals <- cut(.indexmday(January_series), c(0,7,14,21,31), paste0("W",1:4))
splitlist <- split(January_series, intervals)