Joining a column from one table to another by id
Show older comments
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
Answers (1)
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 Comments
Adnan Habib
on 13 Apr 2020
Edited: Adnan Habib
on 13 Apr 2020
Tommy
on 13 Apr 2020
Ah ok. If an ID does show up in multiple rows of B, will the corresponding values for N all be equal, and if not how do you want to decide which value to put in A?
Adnan Habib
on 13 Apr 2020
Adnan Habib
on 13 Apr 2020
Edited: Adnan Habib
on 13 Apr 2020
Tommy
on 13 Apr 2020
Are you sure the 2nd ID in A is somwhere in B?
Categories
Find more on Numeric Types in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!