MATLAB Answers

separate table data in to sub tables

20 views (last 30 days)
ALDO
ALDO on 19 Apr 2019
Commented: ALDO on 10 Oct 2019
Hi everyone
I have a table of data the size of 10000x3. There are 300 different names used in the rows. I would like to seperte the variables that have the same name and make a tabel for each variable.
for example if the table below is my original table :
name Variable1 variable2 variable3
A variable1_A1 variable2_A2 variable3_A3
B variable1_B1 variable2_B2 variable3_B3
K variable1_K1 variable2_K2 variable3_K3
L variable1_L1 variable2_L2 variable3_L3
A variable1_A4 variable2_A5 variable3_A6
A variable1_A7 variable2_A8 variable3_A9
L variable1_L4 variable2_L5 variable3_L6
I need to devide it to 4 differnt tables (one for each name):
name Variable1 variable2 variable3
A variable1_A1 variable2_A2 variable3_A3
A variable1_A4 variable2_A5 variable3_A6
A variable1_A7 variable2_A8 variable3_A9
name Variable1 variable2 variable3
L variable1_L1 variable2_L2 variable3_L3
L variable1_L4 variable2_L5 variable3_L6
Thank you in advance for your help!

Accepted Answer

Walter Roberson
Walter Roberson on 19 Apr 2019
Edited: Walter Roberson on 19 Apr 2019
G = findgroups(YourTable.name);
output = splitapply(@(varargin) {table(varargin{:}, 'VariableNames', YourTable.Properties.VariableNames)}, YourTable, G);
This should give a cell array of tables.
  3 Comments
ALDO
ALDO on 23 Apr 2019
Thank you for taking the time to look over it

Sign in to comment.

More Answers (1)

Peter Perkins
Peter Perkins on 3 May 2019
ALDO, unless you have a good reason for wanting to do this, I'm gonna suggest that you consider NOT doing it. There are a bunch of functions in MATLAB that are happy to do "grouped" calculations on your original timetable, and you will likely find those easier to use than having to loop over a 300-element cell array of tables.
  1 Comment
ALDO
ALDO on 10 Oct 2019
Thank you for your sugestion

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!