2014-02-17 71 views
3

我試圖用一個獨特的不規則時間序列拆分幾個xts對象。 split.xts分割日,分,秒等。使用斷點需要長度相等的向量,當我嘗試分割數據時會產生錯誤。按另一個不規則時間序列拆分時間序列

dd <- c("2014-02-23","2014-03-12", "2014-05-29") 
tt <- c("03:15:52", "03:49:17", "04:03:24", "05:30:19", "05:56:49", 
     "06:14:04", "09:42:13", "11:57:25", "11:58:02", "12:12:49", 
     "15:38:00", "15:44:21", "16:16:04") 
dt <- c(outer(dd,tt,paste)) 
xx <- as.xts(seq_along(dt), as.POSIXct(dt)) 
spltr <- c("2014-01-13 12:09:32", "2014-02-09 06:23:41", 
      "2014-03-01 13:35:12", "2014-05-14 07:12:52") 

我試圖通過spltr分裂xx找到的每一塊記錄的頻率。 我試過aggregate(xx,by=spltr,length)但我得到一個錯誤,因爲spltrxx的長度不一樣。 split.xts不起作用,因爲spltr不規則。

+0

對不起我的tt向量缺少第一個括號tt < - c(... – user2004820

回答

3

首先,將您的xx對象與包含您的斷點的空xts對象合併。

xs <- merge(xx, xts(,as.POSIXct(spltr))) 

然後,你可以通過使用which.i參數[.xts找到你spltr對象的「端點」在xs。現在

ep <- c(0,xs[as.POSIXct(spltr),which.i=TRUE]) 

可以在xs對象使用period.apply(確保應對任何潛在的NA)。

> period.apply(xs, ep, function(x) nrow(na.omit(x))) 
        xx 
2014-01-13 12:09:32 0 
2014-02-09 06:23:41 0 
2014-03-01 13:35:12 13 
2014-05-14 07:12:52 13 
+0

非常好,非常感謝 – user2004820