2013-07-10 49 views
1

這是繼續此問題(R: Recreate historical membership from a list of changes in membership)的問題。爲所有可能的時間序列類創建一個函數方法

這裏討論的問題實際上是由於我們通常有一個指數的成員股票,然後指數成員資格發生變化的金融普遍感興趣的問題。通常我們想要重新創建此成員資格,手頭的數據是當前成員資格以及變更日期。

但是,典型的問題是爲常規時間序列(例如每日,每週等)生成此成員資格,而更改本身是不規則的時間序列。

的方法建議在鏈接到上述問題,這裏可以使用這樣的方式:改變

  1. 查找會員在所有已知的時間。
  2. 以期望的頻率創建一個有利時間分類的序列。
  3. 使用最後一次已知的成員資格更改爲序列中的每個時間複製成員資格。

我會喜歡寫的recreate.memship功能,可以做正確的事情,在任何時間序列類給出R.,我能想到的一種方式indx功能的方法是定義爲每個已知的方法諸如ts,Date,zoo,xts,...,其中存在seq方法。

問題這個冗長的討論後,有兩方面:

  1. 有沒有定義方法,使得我沒有寫每個已知時間類的新方法的一個聰明的辦法。 (Paraphrasing,程序員將如何比我更聰明地設計這個?)
  2. 有沒有針對這個問題/類問題的已知解決方案?

回答

2

xts已經允許這樣做。請參閱package vignette的第4部分。

基本上,您在函數的開頭調用try.xts,最後調用reclass。我在TTR包中使用這個範例。例如:

R> momentum 
function (x, n = 1, na.pad = TRUE) 
{ 
    x <- try.xts(x, error = as.matrix) 
    if (is.xts(x)) { 
     mom <- diff(x, n, na.pad = na.pad) 
    } 
    else { 
     NAs <- NULL 
     if (na.pad) { 
      NAs <- rep(NA, n) 
     } 
     mom <- c(NAs, diff(x, n)) 
    } 
    reclass(mom, x) 
} 
<environment: namespace:TTR> 
+0

這真是太棒了!非常感謝。 – asb

相關問題