How to align multiple matrices based on the first column values?

Here is an example
A = [1,4;2,6;2,7;3,5;3,6;5,2];
B = [2,5;4,6;4,7;5,3];
I want the output to be like (3 columns): (combining the 2nd column of A and B based on their 1st column values)
1 4 Na
2 6 5
2 7 5
3 5 Na
3 6 Na
4 Na 6
4 Na 7
5 2 3
But in reality I have more than 2 datasets that I want to reorganize and combine like the example showing before. Thanks

 Akzeptierte Antwort

Guillaume
Guillaume am 18 Mär. 2019
The simplest way is convert your matrices to a table, which may make sense anyway considering that it looks like the columns of your matrices have different meaning. Then simply outerjoin the two tables. e.g:
A = [1,4;2,6;2,7;3,5;3,6;5,2];
B = [2,5;4,6;4,7;5,3];
tA = array2table(A, 'VariableNames', {'Key', 'ValA'});
tB = array2table(B, 'VariableNames', {'Key', 'ValB'});
tC = outerjoin(tA, tB, 'MergeKeys', true)
For multiple tables, repeat the join in a loop.

2 Kommentare

That is a very clever way!!! It works very well. Thank you so much.
Shirley
Shirley am 18 Mär. 2019
Bearbeitet: Shirley am 18 Mär. 2019
I am sorry that I made a mistake in the question before. Actually, when the Key(first column)=2, I want the row to be:
2 6 5
2 6 NaN
How should I do that then?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Version

R2018b

Tags

Gefragt:

am 18 Mär. 2019

Bearbeitet:

am 18 Mär. 2019

Community Treasure Hunt

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

Start Hunting!

Translated by