when using intersect function i need all rows of B and matching rows of A. how can i do it?

1 view (last 30 days)
i have two varibales A and B of variable sizes for each iteration. lets take first iteration. in 1st iteraton i want to find all rows & column values of B and rows of A which matches with B. and for rows which are not matching i want as zero as given below. like 8542 is not present in A but present in B so in old id column for 8542 i want as zero.
eg.
A id B id
2451 10 2451 15
2554 5 2554 7
5419 2 5419 5
8542 9
i want output like this
B id old id
2451 15 10
2554 7 5
5419 5 2
8542 9 0

Accepted Answer

Stephen23
Stephen23 on 22 Nov 2021
T1 = array2table([2451,10;2554,5;5419,2],'VariableNames',{'A','id'})
T1 = 3×2 table
A id ____ __ 2451 10 2554 5 5419 2
T2 = array2table([2451,15;2554,7;5419,5;8542,9],'VariableNames',{'B','id'})
T2 = 4×2 table
B id ____ __ 2451 15 2554 7 5419 5 8542 9
[X,Y] = ismember(T2.B,T1.A);
Y(X) = T1.id(Y(X));
T2.old_id = Y
T2 = 4×3 table
B id old_id ____ __ ______ 2451 15 10 2554 7 5 5419 5 2 8542 9 0

More Answers (0)

Community Treasure Hunt

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

Start Hunting!