В этом примере показано, как добавить, удалите и перестройте ориентированные на столбец переменные в таблице. Можно добавить, переместить и удалить табличные переменные с помощью addvars
, movevars
, и removevars
функции. Как альтернативы, также можно изменить табличные переменные с помощью точечного синтаксиса или путем индексации в таблицу. Используйте splitvars
и mergevars
функции, чтобы разделить многостолбцовые переменные и объединить несколько переменных в одну. Наконец, можно переориентировать таблицу так, чтобы строки таблицы стали переменными выходной таблицы, с помощью rows2vars
функция.
Также можно изменить табличные переменные с помощью Редактора Переменных.
Загрузите массивы выборочных данных от patients
Matfile. Отобразите имена и размеры переменных, загруженных в рабочую область.
load patients whos -file patients
Name Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 12212 cell Height 100x1 800 double LastName 100x1 12416 cell Location 100x1 15008 cell SelfAssessedHealthStatus 100x1 12340 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