我正在尝试使用MATLAB根据两列对单元矩阵进行排序:
ticker date price
msft 1/9/11 19.8
msft 1/8/11 18.7
csco 1/8/11 9.8
csco 1/9/11 10.0
我想首先按日期对矩阵进行排序,然后按代码进行排序,所以我想要的结果是:
ticker date price
csco 1/8/11 9.8
msft 1/8/11 18.7
csco 1/9/11 10.0
msft 1/9/11 19.8
有人知道我该怎么做吗?谢谢。
最佳答案
我将使用 datenum
将date列转换为相应的序列日期号,并按要求的顺序使用 sortrows
对数据进行排序。
这是一些代码;假设d
是您提供的示例中的4x3单元格数组:
arrayfun
将日期列转换为数字d(:,2) = arrayfun(@(x){datenum(x)},d(:,2));
sortrows
对矩阵进行排序(首先是日期,然后是股票代码)d = sortrows(d,[2 1]);
datestr
用字符串替换日期。d(:,2) = arrayfun(@(x){datestr(x{1},'mm/dd/yy')},d(:,2));
关于matlab - 如何基于两列对矩阵进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6681848/