Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.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
基于R中表B的秩对表A排序_R_Finance_Xts - Fatal编程技术网

基于R中表B的秩对表A排序

基于R中表B的秩对表A排序,r,finance,xts,R,Finance,Xts,这是一个非常新的问题,但我已经有一段时间没有找到解决方案了: 我有一个交易指标(指示)的XTS对象,用于股票数据 A XOM MSFT 2000-11-30 -0.59 0.22 0.10 2000-12-29 0.55 -0.23 0.05 2001-01-30 -0.52 0.09 -0.10

这是一个非常新的问题,但我已经有一段时间没有找到解决方案了:

我有一个交易指标(指示)的XTS对象,用于股票数据

               A           XOM          MSFT
2000-11-30   -0.59        0.22          0.10
2000-12-29    0.55       -0.23          0.05
2001-01-30   -0.52        0.09         -0.10
               A           XOM          MSFT
2000-11-30   -0.15        0.10          0.03
2000-12-29    0.03       -0.05          0.02
2001-01-30   -0.04        0.02         -0.05
以及一个具有相同索引的表,对应的期间返回(return),如下所示

               A           XOM          MSFT
2000-11-30   -0.59        0.22          0.10
2000-12-29    0.55       -0.23          0.05
2001-01-30   -0.52        0.09         -0.10
               A           XOM          MSFT
2000-11-30   -0.15        0.10          0.03
2000-12-29    0.03       -0.05          0.02
2001-01-30   -0.04        0.02         -0.05
我对指示符表进行了排序,并让它返回带有以下代码的列名:

indicate.label <- colnames(indicate)
indicate.rank <- t(apply(indicate, 1, function(x) indicate.label[order(-x)]))    
indicate.rank <- xts(indicate.rank, order.by = index(returns))
我还希望有一个表,根据指标排名给出期间回报:

2000-11-30    0.10         0.03         -0.15
2000-12-29    0.03         0.02         -0.05
2001-01-30    0.02        -0.04         -0.05
我不知道如何为所有行调用正确的符号,或者仅仅根据指示的顺序对表返回进行排序

谢谢你的建议


Trevor J

我对这个解决方案不是特别满意,但它确实有效

row.rank <- t(apply(indicate, 1, order, decreasing=TRUE))
indicate.rank <- return.rank <- indicate  # pre-allocate
for(i in 1:NROW(indicate.rank)) {
  indicate.rank[i,] <- colnames(indicate)[row.rank[i,]]
  return.rank[i,] <- return[i,row.rank[i,]]
}

row.rank为了便于测试,最好在前两个xts对象上提供dput的输出。感谢您的回复。我在这里使用了大约2500个符号,所以我给出了数据的简略表示。我很乐意发布输出,但它大约有7.5MB。有没有办法将文件附加到帖子上?Josh,谢谢你的帮助。我同意,如果数据分组得更好,可能会有更优雅的解决方案。一开始我试图这样做,但没有找到一个没有繁琐循环的方法。但我是R的新手,所以我会再看一看。