Clear Filters
Clear Filters

Zero Padding a Table

48 views (last 30 days)
Robyn Seery
Robyn Seery on 28 Apr 2021
Answered: Adam Danz on 30 Dec 2023
Hi,
Quick question om zero padding tables. I would like to add a specific number of rows to my data (quite a large table).
Below is an example:
LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
I tried the following first, and got this error:
All input arguments must be tables.
T = [T; zeros(5,1)]
Then tried this, and got this error:
All tables being vertically concatenated must have the same number of variables.
T = [T; table(zeros(5,1))]
Do I need to specify the variables? For my actual data, this would be hard, because there are a couple hundred different columns.

Accepted Answer

Walter Roberson
Walter Roberson on 29 Apr 2021
LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
T = 5×6 table
LastName Age Smoker Height Weight BloodPressure ___________ ___ ______ ______ ______ _____________ {'Sanchez'} 38 true 71 176 124 93 {'Johnson'} 43 false 69 163 109 77 {'Li' } 38 true 64 131 125 83 {'Diaz' } 40 false 67 133 117 75 {'Brown' } 49 true 64 119 122 80
emp = {'', nan, false, nan, nan, [nan nan]};
T1 = [T;repmat(emp,5,1)]
T1 = 10×6 table
LastName Age Smoker Height Weight BloodPressure ___________ ___ ______ ______ ______ _____________ {'Sanchez'} 38 true 71 176 124 93 {'Johnson'} 43 false 69 163 109 77 {'Li' } 38 true 64 131 125 83 {'Diaz' } 40 false 67 133 117 75 {'Brown' } 49 true 64 119 122 80 {0×0 char } NaN false NaN NaN NaN NaN {0×0 char } NaN false NaN NaN NaN NaN {0×0 char } NaN false NaN NaN NaN NaN {0×0 char } NaN false NaN NaN NaN NaN {0×0 char } NaN false NaN NaN NaN NaN

More Answers (1)

Adam Danz
Adam Danz on 30 Dec 2023
Starting in MATLAB R2023b, you can use paddata to pad tables.
LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
T = 5×6 table
LastName Age Smoker Height Weight BloodPressure ___________ ___ ______ ______ ______ _____________ {'Sanchez'} 38 true 71 176 124 93 {'Johnson'} 43 false 69 163 109 77 {'Li' } 38 true 64 131 125 83 {'Diaz' } 40 false 67 133 117 75 {'Brown' } 49 true 64 119 122 80
To pad a fixed number of rows,
nTotalRows = height(T) + 5; % pad 5 rows
paddata(T,nTotalRows)
ans = 10×6 table
LastName Age Smoker Height Weight BloodPressure ____________ ___ ______ ______ ______ _____________ {'Sanchez' } 38 true 71 176 124 93 {'Johnson' } 43 false 69 163 109 77 {'Li' } 38 true 64 131 125 83 {'Diaz' } 40 false 67 133 117 75 {'Brown' } 49 true 64 119 122 80 {0×0 double} 0 false 0 0 0 0 {0×0 double} 0 false 0 0 0 0 {0×0 double} 0 false 0 0 0 0 {0×0 double} 0 false 0 0 0 0 {0×0 double} 0 false 0 0 0 0
There's an option to specify the fill value which you could set to missing but this only works when all table variables have a missing indicator. This demo table contains a cell array which does not support missing.
paddata(T,nTotalRows,'FillValue',missing)

Categories

Find more on Tables 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!