Azzera filtri
Azzera filtri

Merge table with different rows

84 visualizzazioni (ultimi 30 giorni)
Shelender Kumar
Shelender Kumar il 2 Nov 2018
Commentato: Star Strider il 9 Feb 2022
I have two files with different rows but with the same number of columns and I want to combine it together but I am getting an error * All tables in the bracketed expression must have the same number of rows. *
file1 = readtable('306K-268K.csv'); file2 = readtable('266K-228K.csv'); Com = [file1 file2];
Thanks a lot for the help

Risposta accettata

Star Strider
Star Strider il 2 Nov 2018
You probably want the outerjoin (link) function:
Com = outerjoin(file1,file2);
See if that does what you want.
  4 Commenti
MattyK
MattyK il 9 Feb 2022
Thanks very much for this solution, have always wanted it. It works perfectly
Star Strider
Star Strider il 9 Feb 2022
@MattyK My pleasure!

Accedi per commentare.

Più risposte (4)

madhan ravi
madhan ravi il 2 Nov 2018
Modificato: madhan ravi il 17 Nov 2018
You can't merge table with different number of size dimensions , use structure instead
  8 Commenti
Shelender Kumar
Shelender Kumar il 18 Nov 2018
Thanks a lot
madhan ravi
madhan ravi il 18 Nov 2018
Glad to help :)

Accedi per commentare.


Stéphane Rainville
Stéphane Rainville il 16 Nov 2018
You're missing a semi-colon to invoke vertical concatenation ('vertcat') rather than default horizontal concatenation ('horzcat').
For instance, two tables with different number of rows (but same number of columns), this does NOT work:
myBigTable = [myTable1 myTable2];
But this does:
myBigTable = [myTable1; myTable2];
I was facing a similar problem when storing tables of different lengths in a cell array.
myTables{1} = myTable1;
myTables{2} = myTable2;
and using
bigTable = [myTables{:}]
did not work because unwrapping and concatenating cell contents invoked horizontal concatenation. You can't just stick a semi-colon in there, so I had to explicitly invoke vertical concatenation like this:
bigTable = vertcat(myTables{:});
  2 Commenti
Shelender Kumar
Shelender Kumar il 17 Nov 2018
Modificato: Shelender Kumar il 17 Nov 2018
Thanks for the help
but I want to place my file1 and file2 side by side. That means it should give me the data like horizcat
Stéphane Rainville
Stéphane Rainville il 17 Nov 2018
Ah I see. Then yeah, tables of different length would be a problem.

Accedi per commentare.


the cyclist
the cyclist il 2 Nov 2018
I'm guessing you need the join command.
  1 Commento
Shelender Kumar
Shelender Kumar il 2 Nov 2018
I have some NAN values in my column so I am getting this error The key variables for A and B cannot contain any missing values.

Accedi per commentare.


Peter Perkins
Peter Perkins il 6 Nov 2018
"Merge" is kind of vague. It may be that you just need to add a semicolon to vertically concatenate:
Com = [file1; file2]
  3 Commenti
HabenG
HabenG il 3 Nov 2021
Modificato: HabenG il 3 Nov 2021
Have you figured out the issues?? seems like there is no way to simply combine columns of different size matrrix, table, array etc...i feel like there should be a simple fuction for this
Peter Perkins
Peter Perkins il 8 Nov 2021
The current way to do this is to create the same number of rows in the smaller matrix/table/whatever. That's already been shown in an earlier reply.

Accedi per commentare.

Categorie

Scopri di più su Data Type Identification in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by