Average columns together that share a common value

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

回答(1 个)

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

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

产品

版本

R2022b

提问:

2023-5-21

回答:

2023-5-21

Community Treasure Hunt

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

Start Hunting!

Translated by