Zero Padding a Table

조회 수: 39 (최근 30일)
Robyn Seery
Robyn Seery 2021년 4월 28일
답변: Adam Danz 2023년 12월 30일
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.

채택된 답변

Walter Roberson
Walter Roberson 2021년 4월 29일
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

추가 답변 (1개)

Adam Danz
Adam Danz 2023년 12월 30일
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)

카테고리

Help CenterFile Exchange에서 Tables에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by