【发布时间】:2019-04-21 22:12:33
【问题描述】:
让我们有一个二维双精度数组,例如:
% Data: ID, Index, Weight, Category
A0=[1 1121 204 1;...
2 2212 112 1;...
3 2212 483 3;...
4 4334 233 1;...
5 4334 359 2;...
6 4334 122 3 ];
对于每个给定的索引,我需要按权重最高的行进行透视/分组,这可以通过任何Pivot Table | 来实现分组依据功能(例如pivottable、SQL GROUP BY 或 MS Excel 数据透视表)
% Current Result
A1=pivottable(A0,[2],[],[3],{@max}); % Pivot Table
A1=cell2mat(A1); % Convert to array
>>A1=[1121 204;...
2212 483;...
4334 359 ]
如果我还需要恢复 ID 和 Category 列,我应该如何进行?
% Required Result
>>A1=[1 1121 204 1;...
3 2212 483 3;...
5 4334 359 2 ];
语法是Matlab,但可以接受涉及其他语言(Java、SQL)的解决方案,因为它们可以转录成Matlab。
【问题讨论】:
-
如果出现平局,是否应该保留所有最大化的行?第一个?
-
我对这种情况没有任何规范。可能是最简单的实现方式。
标签: matlab pivot-table