Table Assignment using two tables of different height.

8 views (last 30 days)
I have two tables of different heights: table1 and table2.
Both tables have the field x and table2 also has the field y.
I want to assign to table1 the parameter y where the table1 x parameter is equal to the table2 x parameter.
Since the tables are big It would be too inefficient of me to try and do double for loops I believe. Can someone help me with an efficient code to do that?
To be more informative, I'd like to do:
table1(table1.x == table2.x).y = table2.y
But since the two tables are not in the same height I can't do that.

Accepted Answer

Stephen23
Stephen23 on 10 Feb 2022
You can use ISMEMBER like this:
T1 = array2table([8,5;9,9;2,9;9,2;6,9;1,9;3,5])
T1 = 7×2 table
Var1 Var2 ____ ____ 8 5 9 9 2 9 9 2 6 9 1 9 3 5
T2 = array2table([6,0;7,0.1;8,0.2;9,0.3])
T2 = 4×2 table
Var1 Var2 ____ ____ 6 0 7 0.1 8 0.2 9 0.3
[X,Y] = ismember(T1.Var1,T2.Var1);
T1.Var2(X) = T2.Var2(Y(X))
T1 = 7×2 table
Var1 Var2 ____ ____ 8 0.2 9 0.3 2 9 9 0.3 6 0 1 9 3 5

More Answers (1)

Adam Danz
Adam Danz on 9 Feb 2022
There are several ways to join tables.
If you get stuck, provide an example of the two tables and the expected result after joining the tables, and show what you've tried so we can help out.
  1 Comment
kuku hello
kuku hello on 10 Feb 2022
Edited: kuku hello on 10 Feb 2022
Thanks I wasn't aware of those functions, and yet the variable x is not equal in both tables.
Meaning some x variables in table 1 exist and in table 2 they don't and vice versa. I see that join ain't what I'm looking for and the innerjoin deletes the rows that are not in common. outerjoin would duplicate rows with the same x since in table2 x values repeat themselves.

Sign in to comment.

Categories

Find more on Tables in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!