Cumulative sum of groups
Show older comments
I need the cumlative sum of the second column of Data grouped by (or reset at each change in) the first column of Data please:
Data = [[1;1;1; 2;2;2; 3;3;3], [1;0;1; 0;1;1; 0;1;0]]
Answer = [Data, [1;1;2; 0;1;2; 0;1;1]]
Data =
1 1
1 0
1 1
2 0
2 1
2 1
3 0
3 1
3 0
Answer =
1 1 1
1 0 1
1 1 2
2 0 0
2 1 1
2 1 2
3 0 0
3 1 1
3 0 1
Accepted Answer
More Answers (1)
Lola Davidson
on 3 Jun 2024
1 vote
The grouptransform function was introduced in R2018b to help make problems like this a bit simpler. You can avoid the tricky cell array syntax that you need to use accumarray and just do this:
Data(:,3) = grouptransform(Data(:,2),Data(:,1),@cumsum)
Categories
Find more on Logical in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!