Dav*_*vid 2 sorting matlab datetime date matrix
我试图使用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
Run Code Online (Sandbox Code Playgroud)
我想先按日期排序矩阵然后按自动收报机排序,所以我想要的结果是:
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
Run Code Online (Sandbox Code Playgroud)
谁知道我怎么能这样做?谢谢.
我会将日期列转换为相应的序列日期编号,datenum
并使用sortrows
所需的排序来对数据进行排序.
这是一些代码; 假设d
是您给出的示例中的4x3单元格数组:
Run Code Online (Sandbox Code Playgroud)d = 'msft' '1/9/11' [19.8000] 'msft' '1/8/11' [18.7000] 'csco' '1/8/11' [ 9.8000] 'csco' '1/9/11' [ 10]
将日期列转换为数字 arrayfun
d(:,2) = arrayfun(@(x){datenum(x)},d(:,2));
Run Code Online (Sandbox Code Playgroud)使用sortrows
(日期优先,然后是股票代码)对矩阵进行排序
d = sortrows(d,[2 1]);
Run Code Online (Sandbox Code Playgroud)用字符串替换日期datestr
.
d(:,2) = arrayfun(@(x){datestr(x{1},'mm/dd/yy')},d(:,2));
Run Code Online (Sandbox Code Playgroud)