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

时间:2011-05-11 00:40:00

标签: 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

与相应期间具有相同索引的表格返回( return ),看起来像

               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))

其中包含按交易指标排名的符号名称表( indication.rank ):

               1            2            3
2000-11-30    XOM         MSFT           A
2000-12-29     A          MSFT          XOM
2001-01-30    XOM          A            MSFT

我还希望有一个表格,根据指标等级给出期间回报:

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

我无法弄清楚如何为所有行调用正确的符号,或者只是根据指示的顺序对表 return 进行排序。

感谢您提出任何建议。

Trevor J

1 个答案:

答案 0 :(得分:1)

我对此解决方案并不是特别满意,但它确实有效。

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,]]
}

如果每个符号的返回值和指示符位于同一个对象中,那么处理此操作可能会更容易,但我不知道这将如何适合您工作流程的其余部分。