Sort cell array based on 2 columns with date and time (strings)
1 回表示 (過去 30 日間)
古いコメントを表示
Christos Antonakopoulos
2015 年 11 月 30 日
コメント済み: Christos Antonakopoulos
2015 年 12 月 1 日
Hello, i have a cell array 395*8 cell.
Columns 3 and 4 have
'01/20/2014' '19:22:05.0120'
'01/15/2014' '19:22:20.8020'
'01/17/2014' '20:01:26.0630'
'01/16/2014' '20:04:21.1260'
and so on.
How can i sort them based firstly on column 3 and then column 4.
sortrows did not work
sortrows(cellname,[3 4]) because i have string values.
1 件のコメント
Stephen23
2015 年 11 月 30 日
編集済み: Stephen23
2015 年 11 月 30 日
Actually the easiest solution is to use ISO 8601 date strings to store your dates, and then you can simply use sort or sortrows, because a lexicographical sort will put them into the correct date order. It really is that easy!
You can use my FEX submissions datestr8601 and |datenum8601 to easily convert between ISO 8601 dates and MATLAB serial date numbers or date vectors.
採用された回答
Andrei Bobrov
2015 年 11 月 30 日
[~,ii] = sort(datenum(strcat(cellname(:,3),{' '},cellname(:,4))));
out = cellname(ii,:);
2 件のコメント
Mohammad Abouali
2015 年 12 月 1 日
編集済み: Mohammad Abouali
2015 年 12 月 1 日
I remove my answer. I like yours more.
その他の回答 (1 件)
Stephen23
2015 年 11 月 30 日
編集済み: Stephen23
2015 年 11 月 30 日
This is trivial if ISO 8601 date strings are used, because then a lexicographical sort really does put them into the correct date order:
% Original cell array:
X = {
1, 5, '01/20/2014', '19:22:05.0120'; ...
2, 6, '01/15/2014', '19:22:20.8020'; ...
3, 7, '01/17/2014', '20:01:26.0630'; ...
4, 8, '01/16/2014', '20:04:21.1260'};
% replace date strings with ISO 8601 dates:
X(:,3) = cellstr(datestr(datevec(X(:,3),'mm/dd/yyyy'),29));
% sort:
[~,idx] = sortrows(X(:,3:4));
Y = X(idx,:)
gives us this output:
Y =
[2] [6] '2014-01-15' '19:22:20.8020'
[4] [8] '2014-01-16' '20:04:21.1260'
[3] [7] '2014-01-17' '20:01:26.0630'
[1] [5] '2014-01-20' '19:22:05.0120'
参考
カテゴリ
Help Center および File Exchange で Shifting and Sorting Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!