Azzera filtri
Azzera filtri

Joining a column from one table to another by id

1 visualizzazione (ultimi 30 giorni)
Adnan Habib
Adnan Habib il 13 Apr 2020
Commentato: Tommy il 13 Apr 2020
I have two tables A and B.
A portion of Table A (1256X1) looks like this:
ID
'46181193'
'11933657'
'98101224'
'9810114303'
'781027845'
'63241627'
'89541678'
'228511401'
Where ID is cell
A portion of Table B (3079X2) looks like this:
ID N
'46181193' 3
'98101224' 1
'781027845' 1
'63241627' 6
'89541678' 1
'96292061' 1
'1496117981' 1
'11592285' 6
'32002285' 5
'36042285' 3
Here ID is cell and N is double. I want Table A to also have the column N by matching the ID variables from Table B. As can be seen clearly Table B has more rows, sometimes repeatation of the values of some older rows. But the end table that I want should have 1256X2 dimension

Risposte (1)

Tommy
Tommy il 13 Apr 2020
Modificato: Tommy il 13 Apr 2020
If you know each ID in A is included in B exactly once, I believe this should work:
A = [A rowfun(@(rn) B.N(strcmp(B.ID,rn)), A, 'OutputVariableNames', 'N')];
(edit) Ok, try this:
A = [A rowfun(@(rn) B.N(find(strcmp(B.ID,rn),1)), A, 'OutputVariableNames', 'N')];
  5 Commenti
Adnan Habib
Adnan Habib il 13 Apr 2020
Modificato: Adnan Habib il 13 Apr 2020
The edit code gives the following error message
"The function '@(rn)B.N(find(strcmp(B.ID,rn),1))' returned an output with more than one row when applied to the 2nd row in A."
What does this mean?
Tommy
Tommy il 13 Apr 2020
Are you sure the 2nd ID in A is somwhere in B?

Accedi per commentare.

Categorie

Scopri di più su Tables 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