How to group a matrix based on one column?

Hi,
I have a 64600x59 matrix data. I need unique values and also non-unique values grouped. Usually i use unique() function and then check if my rows matches with unique value rows, then i group by this using for loop. But this time my data is very big and it takes too much time.
I am curious about if there is any shortcut way or a function in matlab for me to group every same value in a different cell or table. This way i will be seeing non-unique values as grouped.
Do you have any ideas or suggestions?
Thank you

3 Comments

Sevgi
Sevgi on 9 May 2023
Edited: Sevgi on 9 May 2023
Thank you for this suggestion. I study on it and the code work for now.
T=readtable("a.xslx");
[percombine, combinenames]= findgroups(T.Combine);
meanfirstaxle= splitapply(@mean,T.("1. Axle"),percombine);
I can take mean of each groups too. But I still can't see what are group members. Is there a way for it?
There are any number of ways to do grouped calculations, includng groupsummary/transform/filter/counts, varfun/rowfun, and (as Stephen123 says) findgroups/splitapply.
But first you need to show exactly what you have and exactly what you want.

Sign in to comment.

Answers (1)

Matt J
Matt J on 9 May 2023
Edited: Matt J on 9 May 2023
Usually i use unique() function and then check if my rows matches with unique value rows, then i group by this using for loop.
If using unique(), the 3rd output argument gives the group label. There is no need for a for-loop.
[values, ~, groupLabel]=unique(data);

Products

Release

R2021b

Asked:

on 9 May 2023

Commented:

on 5 Jun 2023

Community Treasure Hunt

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

Start Hunting!