add new row to table with missing values

3 views (last 30 days)
Amirali Kamalian
Amirali Kamalian on 18 Jan 2022
Commented: KSSV on 18 Jan 2022
How can I add a new row to an existing table with missing values?
For illustration, I define a table T with 4 variables: name, city, age, height.
V.name = "Ann";
V.city = "Berlin";
V.age = 24;
V.height = 172;
T = struct2table(V);
Now, I want to add another row to this table where the new row only contains values for 3 of the variables (out of 4).
V2.name = "Luka";
V2.city = "Tokyo";
V2.age = 30;
T = [T; struct2table(V2)];
All tables being vertically concatenated must have the same number of variables.
This leads to the following error:
"All tables being vertically concatenated must have the same number of variables."
What's the best practice for such situations?

Answers (2)

KSSV
KSSV on 18 Jan 2022
V.name = "Ann";
V.city = "Berlin";
V.age = 24;
V.height = 172;
T1 = struct2table(V);
V2.name = "Luka";
V2.city = "Tokyo";
V2.age = 30;
T2 = struct2table(V2);
T2.height = NaN ;
T = [T1;T2]
T = 2×4 table
name city age height ______ ________ ___ ______ "Ann" "Berlin" 24 172 "Luka" "Tokyo" 30 NaN
  4 Comments
KSSV
KSSV on 18 Jan 2022
YEs exactly. That makes your life very easy.
V = struct ;
V(1).name = "Ann";
V(1).city = "Berlin";
V(1).age = 24;
V(1).height = 172;
V(2).name = "Luka";
V(2).city = "Tokyo";
V(2).age = 30;
T = struct2table(V)
T = 2×4 table
name city age height ______ ________ ___ ____________ "Ann" "Berlin" 24 {[ 172]} "Luka" "Tokyo" 30 {0×0 double}

Sign in to comment.


VBBV
VBBV on 18 Jan 2022
Edited: VBBV on 18 Jan 2022
V.name = "Ann";
V.city = "Berlin";
V.age = 24;
V.height = 172;
T1 = struct2table(V);
V2.name = "Luka";
V2.city = "Tokyo";
V2.age = 30;
V2.height = [];
T2 = struct2table(V2,'AsArray',true);
T = [T1; T2]
  1 Comment
Amirali Kamalian
Amirali Kamalian on 18 Jan 2022
Thank you for the quick answer. The example I added here is just for illustration and the actual table is much bigger. It would be cumbersome to detect the missing variables in each iteration and then assign NaN (or empty) to those? Do you know of a more flexible way e.g. a built-in function that does just these?

Sign in to comment.

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by