所以,如果我有一个数字数组:
a b
1 2.5
1 1.2
3 2.5
4 0.4
6 3
3 1.2
我想总结列a中的数字与第2列中b的相同值,如下所示:
a b
4 2.5
4 1.2
4 0.4
6 3
因此你可以看到1和3加起来变成4,因为它们具有相同的b值,即2和其余的数字,所以我将如何做到这一点?谢谢 (PS:我的真实数据是整数和小数的组合。谢谢)
答案 0 :(得分:3)
假设A
是输入数组,你可以在这里使用两种方法。
方法#1
的组合[unqcol2,~,idx] = unique(A(:,2),'stable')
[accumarray(idx,A(:,1)) unqcol2]
方法#2
使用bsxfun
-
[unqcol2,~,idx] = unique(A(:,2),'stable')
[sum(bsxfun(@times,bsxfun(@eq,idx,1:max(idx)),A(:,1)),1).' unqcol2 ]