在金融数据处理里经常需要对每只股票的信息进行汇总,有下面一个例子;
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
您好
设cell数据为data,用一个循环就可以了: for i=1:length(data), eval(sprintf('a%i=data{%i};',i,i)); end
仅供参考~
以上就是关于如何用matlab实现sql里的group by全部的内容,包括:如何用matlab实现sql里的group by、如何将SQL数据库中的mat文件导入到matlab、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)