基于R中表B的秩对表A排序
这是一个非常新的问题,但我已经有一段时间没有找到解决方案了: 我有一个交易指标(指示)的XTS对象,用于股票数据基于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
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的新手,所以我会再看一看。