我在文件“equity.dat”中有以下每月股票数据:
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。我应该使用不同的格式吗?
答案 0 :(得分: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
来定义聚合函数 - 您可能希望也可能不希望使用其他内容。