Borrar filtros
Borrar filtros

Zero Padding a Table

48 visualizaciones (últimos 30 días)
Robyn Seery
Robyn Seery el 28 de Abr. de 2021
Respondida: Adam Danz el 30 de Dic. de 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.

Respuesta aceptada

Walter Roberson
Walter Roberson el 29 de Abr. de 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

Más respuestas (1)

Adam Danz
Adam Danz el 30 de Dic. de 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)

Categorías

Más información sobre Tables en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by