Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
quantmod periodReturn函数-如何处理NA值?_R_Xts_Quantmod - Fatal编程技术网

quantmod periodReturn函数-如何处理NA值?

quantmod periodReturn函数-如何处理NA值?,r,xts,quantmod,R,Xts,Quantmod,我使用的是quantmod函数periodReturn,它为具有可用值的列生成正确的结果 这是函数:periodReturn(timeseries,period='weekly',type='log') 这是输入: dax_data.csv nikkei_data.csv spx_data.csv 1990-01-04 01:00:00 NA 38713 NA 1990-01-05 01:00:0

我使用的是quantmod函数periodReturn,它为具有可用值的列生成正确的结果

这是函数:
periodReturn(timeseries,period='weekly',type='log')

这是输入:

                    dax_data.csv nikkei_data.csv spx_data.csv
1990-01-04 01:00:00           NA           38713           NA
1990-01-05 01:00:00           NA           38275           NA
1990-01-08 01:00:00           NA           38295           NA
1990-01-09 01:00:00           NA           37951           NA
1990-01-10 01:00:00           NA           37697           NA
1990-01-11 01:00:00           NA           38170           NA
这是输出:

                    weekly.returns
1999-11-26 01:00:00             NA
1999-12-03 01:00:00    0.026679863
1999-12-10 01:00:00   -0.003482017
1999-12-17 01:00:00    0.041124348
1999-12-22 01:00:00    0.021583488
1999-12-30 01:00:00    0.069259912
我想使用所有三列(ldo)

如何让Period返回到没有数据的所有行,并在一行存在时立即开始

以下是数据的
dput
,以使其可再现:

dput(head(timeseries)) 
structure(c(NA, NA, NA, NA, NA, NA, 38713, 38275, 38295, 37951, 
37697, 38170, NA, NA, NA, NA, NA, NA), .Dim = c(6L, 3L), .indexCLASS = c("POSIXct", 
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", class = c("xts", 
"zoo"), index = structure(c(631411200, 631497600, 631756800, 
631843200, 631929600, 632016000), tzone = "", tclass = c("POSIXct", 
"POSIXt")), .Dimnames = list(NULL, c("dax_data.csv", "nikkei_data.csv", 
"spx_data.csv")))

不使用
timeseries
作为参数,而是使用

   timeseries[apply(!is.na(timeseries), 1, all), ]

periodReturn
不适用于多列timeseries数据。因此,我们必须将其应用于所有列并合并输出

weekly_return = do.call(merge.xts,lapply(colnames(timeseries),function(x){ 
z = periodReturn(timeseries[,x],period = "weekly",type="log");
colnames(z) = x;
return(z) 
} ))

您可能需要使用
PerformanceAnalytics
library。请提供
dput(head(timeseries))
作为I dput(head(timeseries))结构(c(NA,NA,NA,NA,NA,387138275,38295,37951,3769738170,NA,tclna,NA,NA,NA),indexCLASS=c(“POSIXct”,“POSIXt”),ass=c(“POSIXct”,“POSIXt”),.indexTZ=“”,tzone=“”,class=c(“xts”,“zoo”),index=structure(c(631411200,631497600,631756800,631843200,631929600,632016000),tzone=“”,tclass=c(“POSIXct”,“POSIXt”),.Dim=c(6L,3L),.Dimnames=list(NULL,c(“dax_data.csv”,“nikkei_data.csv”,“spx_data.csv”))这超出了所有错误消息,但我只得到了一列作为输出。我希望所有列都被删除。所有的NAs现在都被删除了,但我不希望删除它们,我只希望在计算回报时忽略它们。