如何用matlab实现sql里的group by

如题所述

在金融数据处理里经常需要对每只股票的信息进行汇总,有下面一个例子;
a={'000001',10;'000001',20;'000002',10;'000002',20;'000002',30};
需要这样的结果
{'000001',30;'000002',60}

本人接触matlab时间不长,提供以下思路,看看大家有没更好更简洁的解决办法;

%% 用matlab实现sql里的group by
a={'000001',10;'000001',20;'000002',10;'000002',20;'000002',30};
%取出需要遍历的股票代码
b=unique(a(:,1));
%每次取出单只股票进行求和
sum_a=[];
for i=1:length(b)
temp1=a(find(strcmp(a(:,1),b(i,1))),:);
sumb={b(i,1),sum(cell2mat(temp1(:,2)))};
sum_a=[sum_a;sumb];
end
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-28

该问题 更优质答案 参见:网页链接

相似回答