В этом примере показано, как добавлять, удалять и переупорядочивать переменные, ориентированные на столбцы, в таблице. Можно добавлять, перемещать и удалять переменные таблицы с помощью addvars, movevars, и removevars функции. В качестве альтернативы можно также изменить переменные таблицы с помощью синтаксиса точек или путем индексирования в таблицу. Используйте splitvars и mergevars функции для разделения многоколонных переменных и объединения нескольких переменных в одну. Наконец, можно переориентировать таблицу таким образом, чтобы строки таблицы становились переменными выходной таблицы, используя rows2vars функция.
Переменные таблицы также можно изменять с помощью редактора переменных.
Загрузить массивы образцов данных из patients MAT-файл. Отображение имен и размеров переменных, загруженных в рабочую область.
load patients whos -file patients
Name Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 11412 cell Height 100x1 800 double LastName 100x1 11616 cell Location 100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double
Создайте две таблицы. Создать одну таблицу, T, с информацией, собранной из вопросника пациента, и создайте другую таблицу, T2, с данными, измеренными от пациентов. Каждая таблица содержит 100 строк.
T = table(Age,Gender,Smoker); T2 = table(Height,Weight,Systolic,Diastolic);
Отображение первых пяти строк каждой таблицы.
head(T,5)
ans=5×3 table
Age Gender Smoker
___ __________ ______
38 {'Male' } true
43 {'Male' } false
38 {'Female'} false
40 {'Female'} false
49 {'Female'} false
head(T2,5)
ans=5×4 table
Height Weight Systolic Diastolic
______ ______ ________ _________
71 176 124 93
69 163 109 77
64 131 125 83
67 133 117 75
64 119 122 80
Добавление переменных в таблицу T путем его горизонтального сцепления с T2.
T = [T T2];
Отображение первых пяти строк T.
head(T,5)
ans=5×7 table
Age Gender Smoker Height Weight Systolic Diastolic
___ __________ ______ ______ ______ ________ _________
38 {'Male' } true 71 176 124 93
43 {'Male' } false 69 163 109 77
38 {'Female'} false 64 131 125 83
40 {'Female'} false 67 133 117 75
49 {'Female'} false 64 119 122 80
Стол T теперь имеет 7 переменных и 100 строк.
Если таблицы, которые соединяются по горизонтали, имеют имена строк, horzcat объединяет таблицы путем сопоставления имен строк. Поэтому таблицы должны использовать одинаковые имена строк, но порядок строк не имеет значения.
Добавление имен пациентов из переменной рабочего пространства LastName перед первой табличной переменной в T. Можно указать любое расположение в таблице, используя имя переменной рядом с новым расположением. Используйте кавычки для ссылки на имена переменных таблицы. Однако не используйте кавычки для входных аргументов, которые являются переменными рабочей области.
T = addvars(T,LastName,'Before','Age'); head(T,5)
ans=5×8 table
LastName Age Gender Smoker Height Weight Systolic Diastolic
____________ ___ __________ ______ ______ ______ ________ _________
{'Smith' } 38 {'Male' } true 71 176 124 93
{'Johnson' } 43 {'Male' } false 69 163 109 77
{'Williams'} 38 {'Female'} false 64 131 125 83
{'Jones' } 40 {'Female'} false 67 133 117 75
{'Brown' } 49 {'Female'} false 64 119 122 80
Можно также указать расположения в таблице с помощью чисел. Например, эквивалентный синтаксис, использующий число для указания местоположения, T = addvars(T,LastName,'Before',1).
Альтернативным способом добавления новых табличных переменных является использование синтаксиса точек. При использовании синтаксиса точек новая переменная всегда добавляется в качестве последней табличной переменной. Можно добавить переменную любого типа, если она имеет такое же количество строк, что и таблица.
Создать новую переменную для артериального давления как горизонтальную конкатенацию двух переменных Systolic и Diastolic. Добавить его в T.
T.BloodPressure = [Systolic Diastolic]; head(T,5)
ans=5×9 table
LastName Age Gender Smoker Height Weight Systolic Diastolic BloodPressure
____________ ___ __________ ______ ______ ______ ________ _________ _____________
{'Smith' } 38 {'Male' } true 71 176 124 93 124 93
{'Johnson' } 43 {'Male' } false 69 163 109 77 109 77
{'Williams'} 38 {'Female'} false 64 131 125 83 125 83
{'Jones' } 40 {'Female'} false 67 133 117 75 117 75
{'Brown' } 49 {'Female'} false 64 119 122 80 122 80
T теперь имеет 9 переменных и 100 строк. Переменная таблицы может иметь несколько столбцов. Так что, хотя BloodPressure имеет два столбца, это одна табличная переменная.
Добавление новой переменной, BMI, в таблице T, который содержит индекс массы тела для каждого пациента. BMI является функцией роста и веса. При вычислении BMI, вы можете обратиться к Weight и Height переменные, которые находятся в T.
T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2;
Операторы ./ и .^ при расчете BMI указывают деление на элементы и возведение в степень соответственно.
Отображение первых пяти строк таблицы T.
head(T,5)
ans=5×10 table
LastName Age Gender Smoker Height Weight Systolic Diastolic BloodPressure BMI
____________ ___ __________ ______ ______ ______ ________ _________ _____________ ______
{'Smith' } 38 {'Male' } true 71 176 124 93 124 93 24.547
{'Johnson' } 43 {'Male' } false 69 163 109 77 109 77 24.071
{'Williams'} 38 {'Female'} false 64 131 125 83 125 83 22.486
{'Jones' } 40 {'Female'} false 67 133 117 75 117 75 20.831
{'Brown' } 49 {'Female'} false 64 119 122 80 122 80 20.426
Переместить переменную таблицы BMI с использованием movevars функция, так что она после переменной Weight. При указании переменных таблицы по имени используйте кавычки.
T = movevars(T,'BMI','After','Weight'); head(T,5)
ans=5×10 table
LastName Age Gender Smoker Height Weight BMI Systolic Diastolic BloodPressure
____________ ___ __________ ______ ______ ______ ______ ________ _________ _____________
{'Smith' } 38 {'Male' } true 71 176 24.547 124 93 124 93
{'Johnson' } 43 {'Male' } false 69 163 24.071 109 77 109 77
{'Williams'} 38 {'Female'} false 64 131 22.486 125 83 125 83
{'Jones' } 40 {'Female'} false 67 133 20.831 117 75 117 75
{'Brown' } 49 {'Female'} false 64 119 20.426 122 80 122 80
Можно также указать расположения в таблице с помощью чисел. Например, эквивалентный синтаксис, использующий число для указания местоположения, T = movevars(T,'BMI,'After',6). Часто удобнее ссылаться на переменные по имени.
В качестве альтернативы можно перемещать переменные таблицы путем индексирования. Можно индексировать в таблицу с использованием того же синтаксиса, который используется для индексирования в матрицу.
Двинуться BloodPressure чтобы он находился рядом с BMI.
T = T(:,[1:7 10 8 9]); head(T,5)
ans=5×10 table
LastName Age Gender Smoker Height Weight BMI BloodPressure Systolic Diastolic
____________ ___ __________ ______ ______ ______ ______ _____________ ________ _________
{'Smith' } 38 {'Male' } true 71 176 24.547 124 93 124 93
{'Johnson' } 43 {'Male' } false 69 163 24.071 109 77 109 77
{'Williams'} 38 {'Female'} false 64 131 22.486 125 83 125 83
{'Jones' } 40 {'Female'} false 67 133 20.831 117 75 117 75
{'Brown' } 49 {'Female'} false 64 119 20.426 122 80 122 80
В таблице со многими переменными часто удобнее использовать movevars функция.
Чтобы удалить переменные таблицы, используйте removevars функция. Удалить Systolic и Diastolic табличные переменные.
T = removevars(T,{'Systolic','Diastolic'});
head(T,5)ans=5×8 table
LastName Age Gender Smoker Height Weight BMI BloodPressure
____________ ___ __________ ______ ______ ______ ______ _____________
{'Smith' } 38 {'Male' } true 71 176 24.547 124 93
{'Johnson' } 43 {'Male' } false 69 163 24.071 109 77
{'Williams'} 38 {'Female'} false 64 131 22.486 125 83
{'Jones' } 40 {'Female'} false 67 133 20.831 117 75
{'Brown' } 49 {'Female'} false 64 119 20.426 122 80
В качестве альтернативы можно удалить переменные, используя синтаксис точек и пустую матрицу. []. Удалить Age переменная из таблицы.
T.Age = []; head(T,5)
ans=5×7 table
LastName Gender Smoker Height Weight BMI BloodPressure
____________ __________ ______ ______ ______ ______ _____________
{'Smith' } {'Male' } true 71 176 24.547 124 93
{'Johnson' } {'Male' } false 69 163 24.071 109 77
{'Williams'} {'Female'} false 64 131 22.486 125 83
{'Jones' } {'Female'} false 67 133 20.831 117 75
{'Brown' } {'Female'} false 64 119 20.426 122 80
Можно также удалить переменные с помощью индексирования и пустой матрицы. []. Удалить Gender переменная из таблицы.
T(:,'Gender') = [];
head(T,5)ans=5×6 table
LastName Smoker Height Weight BMI BloodPressure
____________ ______ ______ ______ ______ _____________
{'Smith' } true 71 176 24.547 124 93
{'Johnson' } false 69 163 24.071 109 77
{'Williams'} false 64 131 22.486 125 83
{'Jones' } false 67 133 20.831 117 75
{'Brown' } false 64 119 20.426 122 80
Чтобы разделить переменные таблицы с несколькими столбцами на переменные, каждая из которых имеет один столбец, используйте splitvars функции. Разделить переменную BloodPressure на две переменные.
T = splitvars(T,'BloodPressure','NewVariableNames',{'Systolic','Diastolic'}); head(T,5)
ans=5×7 table
LastName Smoker Height Weight BMI Systolic Diastolic
____________ ______ ______ ______ ______ ________ _________
{'Smith' } true 71 176 24.547 124 93
{'Johnson' } false 69 163 24.071 109 77
{'Williams'} false 64 131 22.486 125 83
{'Jones' } false 67 133 20.831 117 75
{'Brown' } false 64 119 20.426 122 80
Аналогично, можно сгруппировать связанные переменные таблицы в одну переменную, используя mergevars функция. Объединиться Systolic и Diastolic обратно в одну переменную и назовите ее BP.
T = mergevars(T,{'Systolic','Diastolic'},'NewVariableName','BP');
head(T,5)ans=5×6 table
LastName Smoker Height Weight BMI BP
____________ ______ ______ ______ ______ __________
{'Smith' } true 71 176 24.547 124 93
{'Johnson' } false 69 163 24.071 109 77
{'Williams'} false 64 131 22.486 125 83
{'Jones' } false 67 133 20.831 117 75
{'Brown' } false 64 119 20.426 122 80
Можно переориентировать строки таблицы или расписания таким образом, чтобы они становились переменными в выходной таблице, используя rows2vars функция. Однако если таблица содержит переменные с несколькими столбцами, их необходимо разделить перед вызовом rows2vars.
Переориентировать строки T. Укажите, что имена пациентов в T - имена переменных таблицы в выходной таблице. Первая переменная T3 содержит имена переменных T. Каждая оставшаяся переменная T3 содержит данные из соответствующей строки T.
T = splitvars(T,'BP','NewVariableNames',{'Systolic','Diastolic'}); T3 = rows2vars(T,'VariableNamesSource','LastName'); T3(:,1:5)
ans=6×5 table
OriginalVariableNames Smith Johnson Williams Jones
_____________________ ______ _______ ________ ______
{'Smoker' } 1 0 0 0
{'Height' } 71 69 64 67
{'Weight' } 176 163 131 133
{'BMI' } 24.547 24.071 22.486 20.831
{'Systolic' } 124 109 125 117
{'Diastolic'} 93 77 83 75
Синтаксис точек можно использовать с помощью T3 для доступа к данным пациента в виде массива. Однако если значения строк входной таблицы не могут быть объединены, то переменные выходной таблицы являются массивами ячеек.
T3.Smith
ans = 6×1
1.0000
71.0000
176.0000
24.5467
124.0000
93.0000
addvars | inner2outer | mergevars | movevars | removevars | rows2vars | splitvars | table