2012-03-09 14 views
1

に月次リターンを読ん:私は、ファイル「equity.dat」で、次の毎月の株式データを持っているR

2010-03,1e+06 
2010-03,1.00611e+06 
2010-04,998465 
2010-05,1.00727e+06 
2010-06,1.00965e+06 

私は次のコードを使用して月次リターンを計算しようとしています:

library(PerformanceAnalytics) 
y = Return.read(filename="equity.dat", frequency = "m", sep=",", header=FALSE) 
y 

z = Return.calculate(y) 
z 
z[1]=0 #added this to remove the NA in first return 

私は次のエラーを取得する:

Error in read.zoo(filename, sep = sep, format = format, FUN = FUN, header = header, : 
    index has bad entries at data rows: 1 2 3 4 5 

as.monを使用しているとき、私はReturn.readの書式をチェックアウトし、私たちは午前理由ですyyyy-mmです。別の形式を使用する必要があります。

答えて

2

?Return.readによれば、デフォルトのformat.in="%F"です。これはデータのフォーマットではありませんので、指定する必要があります。また、インデックスが(そのないこのケースで)一意である必要があり、またはそうでなければ、それは内部的に使用する後者の?zoo?read.zooごとに集計されなければならない:

Return.read(filename = "equity.dat", frequency = "m", sep = ",", header = FALSE, 
    aggregate = function(x) tail(x, 1), format = "%Y-%m") 

我々は、集約関数を定義するtailを使用しています - あなたは何か他のものを使用したいかもしれないし、したくないかもしれません。

+0

修正されたコードありがとうございます。私は前にそれを使用していないので、tail()も見上げます。上記の集計を使用すると、3月のリターンは生成されません。これは、最初の株式を含めて達成しようとしていたものです。 – user1155299

+0

2月として初期株主にラベルを付けます。その場合、 'aggregate ='は必要ありません。 –

+0

ありがとう、それは簡単だった:-) – user1155299

関連する問題