我正在尝试使用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/

    10-09 06:58
    查看更多