Average columns together that share a common value

1 view (last 30 days)
Lets say I have a 2 x 10 matrix M
The first column being an ID, and the second a value
1, 25
3, 33
3. 45
2, 22
4, 54
4, 56
5, 23
5, 65
1, 27
2, 29
How could I average the values with the same ID such that the new matrix would be
1, 26
2, 25.5
3, 39
4, 55
5, 44

Answers (1)

Paul
Paul on 21 May 2023
D = [1, 25
3, 33
3. 45
2, 22
4, 54
4, 56
5, 23
5, 65
1, 27
2, 29];
[G,ID] = findgroups(D(:,1));
[ID splitapply(@mean,D(:,2),G)]
ans = 5×2
1.0000 26.0000 2.0000 25.5000 3.0000 39.0000 4.0000 55.0000 5.0000 44.0000

Categories

Find more on Operating on Diagonal Matrices in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!