对数据集行中的值进行排名

时间:2012-12-26 17:50:31

标签: matlab

我有一个名为'股票'的股票价格数据集。每列是不同的库存。每行都是股票价格的日期。

如何对给定日期的股票价格进行排名?

我试过

 tiedrank(stocks.yhoo)

它成功地排列了YHOO股票的价格。但是,我想按行排名,而不是列。

另外,当我尝试

tiedrank(stocks(1,:))

或删除第1列中的日期列

tiedrank(stocks(1,2:3))

我收到错误消息:数据集数组下标必须是二维的。

我做错了吗?或者我最好使用矩阵?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望根据给定日期的价格对股票进行排名,其中日期是行,而股票是列。要在行中使用tiedrank,您需要将数据集的该部分转换为double,然后使用输出索引列表进行排序:

%# create index for sorting
idx = tiedrank( double( stocks(1,:) ));

%# reorder columns with index
sortedStocks = stocks(:,idx);