# How to sort all rows in one table based on one row from the table and another table

4 views (last 30 days)
Pushti Shah on 19 Aug 2022
Commented: Stephen23 on 22 Aug 2022
I have two different tables one with names (table 1) and others with names and data (table 2) but the second table is out of order. I want to order the names in table 2 by the order in table 1 but also not lose the data in the row. For example:
Table 1: Table 2:
Mom Sister 25 67 89
and I want to sort it according to table 1 so
Sister 25 67 89
Mom 88 76 23
Stephen23 on 22 Aug 2022
t1 = 3×1 table
Names __________ {'Mom' } {'Dad' } {'Sister'}
t2 = 3×4 table
Names Var1 Var2 Var3 __________ ____ ____ ____ {'Sister'} 25 67 89 {'Mom' } 88 76 23 {'Dad' } 90 45 28
t3 = join(t1,t2) % the simple MATLAB approach
t3 = 3×4 table
Names Var1 Var2 Var3 __________ ____ ____ ____ {'Mom' } 88 76 23 {'Dad' } 90 45 28 {'Sister'} 25 67 89

Voss on 19 Aug 2022
Edited: Voss on 19 Aug 2022
t1 = table( ...
'VariableNames',{'Names'})
t1 = 3×1 table
Names __________ {'Mom' } {'Dad' } {'Sister'}
t2 = table( ...
[25;88;90], ...
[67;76;45], ...
[89;23;28], ...
'VariableNames',{'Names','Var1','Var2','Var3'})
t2 = 3×4 table
Names Var1 Var2 Var3 __________ ____ ____ ____ {'Sister'} 25 67 89 {'Mom' } 88 76 23 {'Dad' } 90 45 28
[~,idx] = ismember(t1.Names,t2.Names);
t2 = t2(idx,:)
t2 = 3×4 table
Names Var1 Var2 Var3 __________ ____ ____ ____ {'Mom' } 88 76 23 {'Dad' } 90 45 28 {'Sister'} 25 67 89
Pushti Shah on 22 Aug 2022
Thank You so much!

KSSV on 19 Aug 2022
T1 = {'Mom', 'Dad' 'Sister'} ;
[c,ia] = ismember(T1,T2) ;
T2(ia)
ans = 1×3 cell array
Now use the indices ia to reorder your table. For a table T, you can use
T = T(ia,:)

### Categories

Find more on Matrices and Arrays in Help Center and File Exchange

R2022a

### Community Treasure Hunt

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

Start Hunting!