如何根据两列对矩阵进行排序
我正在尝试使用 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
有人知道我该怎么做吗?谢谢。
I am trying to sort a cell matrix based on two columns using 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
I want to sort the matrix first by date then by ticker, so the result I want is:
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
Anyone knows how I can do that? THanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我会将日期列转换为相应的日期序列号
datenum
并使用
sortrows
按照所需的顺序进行排序 数据。这是一些代码;假设
d
是您给出的示例中的 4x3 元胞数组:使用
arrayfun
< 将日期列转换为数字/a>使用
排序行
(先是日期,然后是股票代码)将日期替换为
datestr
。I would convert the date column into the corresponding serial date number with
datenum
and usesortrows
with the required ordering to sort the data.Here's some code ; assume
d
is your 4x3 cell array from the example you gave:Convert the date column to numbers with
arrayfun
Sort the matrix with
sortrows
(date first then ticker symbol)Replace the date with a string with
datestr
.将两个元胞数组连接成一个字符串元胞数组。对生成的字符串元胞数组进行排序并获取索引的顺序。 按照 Jacob 的建议,使用这些索引对原始元胞数组进行排序
,如果您使用的日期格式不能按字母顺序排序,您可以替换
为
concatenate the two cell arrays into a single cell array of strings. Sort the resultant cell array of strings and get the order of the indicies. Use those indicies to sort the original cell arrays
following Jacob's suggestion, if the date format you are using is not sortable alphabetically you can replace
with
使用类似于 @Jacob< /a> 的,这是一个稍微简单的解决方案:
之前:
之后:
Using a similar idea to @Jacob's, here is a slightly easier solution:
The before:
The after:
针对您的具体情况:
for your specific case: