Table Assignment using two tables of different height.

10 次查看(过去 30 天)
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.

采纳的回答

Stephen23
Stephen23 2022-2-10
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

更多回答(1 个)

Adam Danz
Adam Danz 2022-2-9
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 个评论
kuku hello
kuku hello 2022-2-10
编辑:kuku hello 2022-2-10
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Tables 的更多信息

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by