Этот пример показывает, как добавить, удалить, и перестроить ориентированный на столбец на переменные в таблице. Можно добавить, переместиться и удалить табличные переменные с помощью addvars
, movevars
и функций removevars
. Как альтернативы, также можно изменить табличные переменные с помощью точечного синтаксиса или путем индексации в таблицу. Используйте splitvars
и функции mergevars
, чтобы разделить многостолбцовые переменные и объединить несколько переменных в одну. Наконец, можно переориентировать таблицу так, чтобы строки таблицы стали переменными выходной таблицы, с помощью функции rows2vars
.
Также можно изменить табличные переменные с помощью Редактора Переменных.
Загрузите массивы демонстрационных данных из MAT-файла patients
. Отобразите имена и размеры переменных, загруженных в рабочую область.
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
. Удалите табличные переменные Diastolic
и Systolic
.
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
| таблица