阅读以R为单位的月度报表
我在文件“equity.dat”中有以下月度权益数据: 我尝试使用以下代码计算月度回报:阅读以R为单位的月度报表,r,time-series,R,Time Series,我在文件“equity.dat”中有以下月度权益数据: 我尝试使用以下代码计算月度回报: 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 但我得到了以下错误: Err
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的原因。我应该使用不同的格式。根据
返回。读取默认的格式。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
来定义聚合函数——您可能希望也可能不希望使用其他功能。感谢您提供了正确的代码。我还将查找tail(),因为我以前从未使用过它。通过使用上述合计,它不会产生3月份的回报,而这正是我试图通过将初始股权标记为2月份来实现的,这样你就不会有两个3月份的分录。在这种情况下,您不需要aggregate=
。
Return.read(filename = "equity.dat", frequency = "m", sep = ",", header = FALSE,
aggregate = function(x) tail(x, 1), format = "%Y-%m")