9

私は R に非常に慣れていないので、この問題を説明するときに用語が間違っていたら申し訳ありません。

xts オブジェクトに変換できた csv ファイルに、毎日の返品データのセットがあります。データの形式は次のとおりです。

           HighYield..EUR. MSCI.World..EUR.
2002-01-31          0.0144           0.0031    
2002-02-01          0.0056          -0.0132       
2002-02-02          0.0373           0.0356       
2002-02-03         -0.0167          -0.0644      
2002-02-04         -0.0062          -0.0332      
2002-02-05         -0.0874          -0.1112 
...

月の最初の営業日を (インデックスの値の範囲から) 見つけて、これらのリターンを含む新しい xts オブジェクトを作成するスクリプトを作成したいと考えています。

たとえば、スクリプトを実行すると、次の形式の xts オブジェクトが作成されます。

           HighYield..EUR. MSCI.World..EUR.
2002-01-31          0.0144           0.0031    
2002-02-28          0.0011          -0.0112       
2002-03-31          0.0222           0.0224       
2002-04-30         -0.0333          -0.0223      
2002-05-30         -0.0011          -0.0012      
2002-06-30         -0.0888          -0.0967 
...

誰か助けてくれませんか?可能であれば、スクリプトの各部分が何をしているのかを説明してください。

4

1 に答える 1

13

ベース R 言語のおかげで、これを 1 行で実行できます。

 library(xts)
 data(sample_matrix)
 x <- as.xts(sample_matrix)
 do.call(rbind, lapply(split(x, "months"), first))

各ステップの動作を説明するには:

 # Split the xts object into a list with an element for each month.
 x1 <- split(x, "months")
 # Loop over the list (x1) and call the first() function on each element.
 # This returns a new list where each element only contains the first observation
 # from each respective element in x1.
 x2 <- lapply(x1, first)
 # Call rbind() with all the elements of x2 as arguments to rbind()
 # Same as rbind(x2[[1]], x2[[2]], ..., x2[[N]])
 x3 <- do.call(rbind, x2)
于 2012-06-12T13:16:05.583 に答える