当第一列数据相等时对行值求和

问题描述 投票:0回答:1

如何对第 1 列中相同值的第 2 列中的数据求和:

c = [11 1;
     11 3;
     12 5;
     13 9;
     13 11;
     13 3]

预期结果是:

r = [11 4;
     12 5;
     13 23]

我知道如何使用循环来管理它,但是还有其他更简单的方法吗?在 Matlab 中,函数

accumarray
可以工作,但 Scilab 中有类似的东西吗?

matlab sum scilab
1个回答
1
投票

在下面找到一个解决方案,可能不是最好的

[c,k]=gsort(c,'r','i');
i=find(c(1:$-1,1)<>c(2:$,1));
r=[];l=1;
for j=[i(1:$),size(c,1)]
   r=[r;c(j,1),sum(c(l:j,2))];
   l=j+1;
end
© www.soinside.com 2019 - 2024. All rights reserved.