Effacer les filtres
Effacer les filtres

Joining a column from one table to another by id

1 vue (au cours des 30 derniers jours)
Adnan Habib
Adnan Habib le 13 Avr 2020
Commenté : Tommy le 13 Avr 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

Réponses (1)

Tommy
Tommy le 13 Avr 2020
Modifié(e) : Tommy le 13 Avr 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 commentaires
Adnan Habib
Adnan Habib le 13 Avr 2020
Modifié(e) : Adnan Habib le 13 Avr 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 le 13 Avr 2020
Are you sure the 2nd ID in A is somwhere in B?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by