В этом примере показано, как создать таблицу из переменных рабочей области, работать с данными таблицы и записать таблицы в файлы для дальнейшего использования. table
- тип данных для сбора гетерогенных данных и свойств метаданных, таких как имена переменных, имена строк, описания и переменные модули, в одном контейнере.
Таблицы подходят для ориентированных на столбцы или табличных данных, которые часто хранятся в виде столбцов в текстовом файле или в электронной таблице. Каждая переменная в таблице может иметь различные типы данных, но должна иметь одинаковое число строк. Однако переменные в таблице не ограничены векторами-столбцами. Например, табличная переменная может содержать матрицу с несколькими столбцами, пока она имеет одинаковое число строк, что и другие табличные переменные. Типичным использованием для таблицы является хранение экспериментальных данных, где строки представляют различные наблюдения, а столбцы представляют различные измеренные переменные.
Таблицы являются удобными контейнерами для сбора и организации связанных переменных данных, а также для просмотра и обобщения данных. Например, можно извлечь переменные для выполнения вычислений и удобно добавить результаты как новые табличные переменные. Когда вы закончите вычисления, запишите таблицу в файл, чтобы сохранить результаты.
Составьте таблицу из переменных рабочей области и просмотрите ее. Кроме того, используйте Инструмент для импорта или readtable
функция для создания таблицы из электронной таблицы или текстового файла. При импорте данных из файла с помощью этих функций каждый столбец становится табличной переменной.
Загрузка выборочных данных для 100 пациентов из patients
MAT-файл в переменные рабочей области.
load patients
whos
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
Заполните таблицу ориентированными на столбцы переменными, которые содержат данные о пациентах. Вы можете получить доступ и назначить табличные переменные по имени. При назначении табличной переменной из переменной рабочей области можно присвоить табличной переменной другое имя.
Создайте таблицу и заполните ее Gender
, Smoker
, Height
, и Weight
переменные рабочей области. Отобразите первые пять строк.
T = table(Gender,Smoker,Height,Weight); T(1:5,:)
ans=5×4 table
Gender Smoker Height Weight
__________ ______ ______ ______
{'Male' } true 71 176
{'Male' } false 69 163
{'Female'} false 64 131
{'Female'} false 67 133
{'Female'} false 64 119
В качестве альтернативы используйте readtable
функция для чтения данных о пациентах из файла с разделителем запятыми. readtable
считывает все столбцы, которые находятся в файле.
Составьте таблицу путем чтения всех столбцов из файла, patients.dat
.
T2 = readtable('patients.dat');
T2(1:5,:)
ans=5×10 table
LastName Gender Age Location Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus
____________ __________ ___ _____________________________ ______ ______ ______ ________ _________ ________________________
{'Smith' } {'Male' } 38 {'County General Hospital' } 71 176 1 124 93 {'Excellent'}
{'Johnson' } {'Male' } 43 {'VA Hospital' } 69 163 0 109 77 {'Fair' }
{'Williams'} {'Female'} 38 {'St. Mary's Medical Center'} 64 131 0 125 83 {'Good' }
{'Jones' } {'Female'} 40 {'VA Hospital' } 67 133 0 117 75 {'Fair' }
{'Brown' } {'Female'} 49 {'County General Hospital' } 64 119 0 122 80 {'Good' }
Вы можете назначить больше ориентированных на столбцы табличных переменных с помощью записи через точку, T.varname
, где T
является таблицей и varname
- желаемое имя переменной. Создайте идентификаторы, которые являются случайными числами. Затем присвойте их табличной переменной и назовите табличную переменную ID
. Все переменные, которые вы присвоите таблице, должны иметь одинаковое число строк. Отображение первых пяти строк T
.
T.ID = randi(1e4,100,1); T(1:5,:)
ans=5×5 table
Gender Smoker Height Weight ID
__________ ______ ______ ______ ____
{'Male' } true 71 176 8148
{'Male' } false 69 163 9058
{'Female'} false 64 131 1270
{'Female'} false 67 133 9134
{'Female'} false 64 119 6324
Все переменные, которые вы присвоите таблице, должны иметь одинаковое число строк.
Просмотрите тип данных, описание, модули и другую описательную статистику для каждой переменной, создав сводную таблицу с помощью summary
функция.
summary(T)
Variables: Gender: 100x1 cell array of character vectors Smoker: 100x1 logical Values: True 34 False 66 Height: 100x1 double Values: Min 60 Median 67 Max 72 Weight: 100x1 double Values: Min 111 Median 142.5 Max 202 ID: 100x1 double Values: Min 120 Median 5485.5 Max 9706
Верните размер таблицы.
size(T)
ans = 1×2
100 5
T
содержит 100 строк и 5 переменных.
Создайте новую меньшую таблицу, содержащую первые пять строк T
и отобразите его. Можно использовать числовую индексацию в круглых скобках, чтобы задать строки и переменные. Этот метод похож на индексацию в числовые массивы для создания подрешеток. Tnew
представляет собой таблицу 5 на 5.
Tnew = T(1:5,:)
Tnew=5×5 table
Gender Smoker Height Weight ID
__________ ______ ______ ______ ____
{'Male' } true 71 176 8148
{'Male' } false 69 163 9058
{'Female'} false 64 131 1270
{'Female'} false 67 133 9134
{'Female'} false 64 119 6324
Создайте меньшую таблицу, содержащую все строки Tnew
и переменные от второго до последнего. Используйте end
ключевое слово, указывающее последнюю переменную или последнюю строку таблицы. Tnew
представляет собой таблицу 5 на 4.
Tnew = Tnew(:,2:end)
Tnew=5×4 table
Smoker Height Weight ID
______ ______ ______ ____
true 71 176 8148
false 69 163 9058
false 64 131 1270
false 67 133 9134
false 64 119 6324
Добавьте имена строк в T
и индексируйте в таблицу, используя имена строк и переменных вместо числовых индексов. Добавьте имена строк путем присвоения LastName
переменная рабочей области в RowNames
свойство T
.
T.Properties.RowNames = LastName;
Отображение первых пяти строк T
с именами строк.
T(1:5,:)
ans=5×5 table
Gender Smoker Height Weight ID
__________ ______ ______ ______ ____
Smith {'Male' } true 71 176 8148
Johnson {'Male' } false 69 163 9058
Williams {'Female'} false 64 131 1270
Jones {'Female'} false 67 133 9134
Brown {'Female'} false 64 119 6324
Верните размер T
. Размер не меняется, потому что имена строк и переменных не включаются при вычислении размера таблицы.
size(T)
ans = 1×2
100 5
Выберите все данные для пациентов с последними именами 'Smith'
и 'Johnson'
. В этом случае проще использовать имена строк, чем использовать числовые индексы. Tnew
представляет собой таблицу 2 на 5.
Tnew = T({'Smith','Johnson'},:)
Tnew=2×5 table
Gender Smoker Height Weight ID
________ ______ ______ ______ ____
Smith {'Male'} true 71 176 8148
Johnson {'Male'} false 69 163 9058
Выберите высоту и вес пациента с именем 'Johnson'
путем индексации имен переменных. Tnew
представляет собой таблицу 1 на 2.
Tnew = T('Johnson',{'Height','Weight'})
Tnew=1×2 table
Height Weight
______ ______
Johnson 69 163
Вы можете получить доступ к табличным переменным или с синтаксисом точки, как в T.Height
, или путем именованного индексирования, как в T(:,'Height')
.
Вы можете получить доступ к содержимому табличных переменных, а затем выполнить вычисления по ним с помощью функций MATLAB ®. Вычислите массу тела-индекс (BMI
) на основе данных в существующих табличных переменных и добавить его как новую переменную. Постройте график отношений BMI
к статусу пациента как курильщика или некурящего. Добавьте показания артериального давления к таблице и постройте график зависимости артериального давления от ИМТ.
Вычислите BMI
используя табличные переменные, Weight
и Height
. Можно извлечь Weight
и Height
для вычисления при удобном сохранении Weight
, Height
, и BMI
в таблице с остальными данными о пациентах. Отображение первых пяти строк T
.
T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2; T(1:5,:)
ans=5×6 table
Gender Smoker Height Weight ID BMI
__________ ______ ______ ______ ____ ______
Smith {'Male' } true 71 176 8148 24.547
Johnson {'Male' } false 69 163 9058 24.071
Williams {'Female'} false 64 131 1270 22.486
Jones {'Female'} false 67 133 9134 20.831
Brown {'Female'} false 64 119 6324 20.426
Заполните модули измерения и описаний переменных для BMI
. Можно добавить метаданные к любой табличной переменной, чтобы дополнительно описать данные, содержащиеся в переменной.
T.Properties.VariableUnits{'BMI'} = 'kg/m^2'; T.Properties.VariableDescriptions{'BMI'} = 'Body Mass Index';
Создайте гистограмму, чтобы выяснить, существует ли связь между курением и индексом массы тела в этой группе пациентов. Можно индексировать в BMI
с логическими значениями из Smoker
табличная переменная, поскольку каждая строка содержит BMI
и Smoker
значения для того же пациента.
tf = (T.Smoker == false); h1 = histogram(T.BMI(tf),'BinMethod','integers'); hold on tf = (T.Smoker == true); h2 = histogram(T.BMI(tf),'BinMethod','integers'); xlabel('BMI (kg/m^2)'); ylabel('Number of Patients'); legend('Nonsmokers','Smokers'); title('BMI Distributions for Smokers and Nonsmokers'); hold off
Добавьте показания артериального давления для пациентов из переменных рабочей области Systolic
и Diastolic
. Каждая строка содержит Systolic
, Diastolic
, и BMI
значения для того же пациента.
T.Systolic = Systolic; T.Diastolic = Diastolic;
Создайте гистограмму, чтобы показать, существует ли связь между высокими значениями Diastolic
и BMI
.
tf = (T.BMI <= 25); h1 = histogram(T.Diastolic(tf),'BinMethod','integers'); hold on tf = (T.BMI > 25); h2 = histogram(T.Diastolic(tf),'BinMethod','integers'); xlabel('Diastolic Reading (mm Hg)'); ylabel('Number of Patients'); legend('BMI <= 25','BMI > 25'); title('Diastolic Readings for Low and High BMI'); hold off
Чтобы подготовить таблицу к выходам, переупорядочьте строки таблицы по имени и табличные переменные по положению или имени. Отображение окончательного расположения таблицы.
Отсортируйте таблицу по именам строк, чтобы пациенты были указаны в алфавитном порядке.
T = sortrows(T,'RowNames');
T(1:5,:)
ans=5×8 table
Gender Smoker Height Weight ID BMI Systolic Diastolic
__________ ______ ______ ______ ____ ______ ________ _________
Adams {'Female'} false 66 137 8235 22.112 127 83
Alexander {'Male' } true 69 171 1300 25.252 128 99
Allen {'Female'} false 63 143 7432 25.331 113 80
Anderson {'Female'} false 68 128 1577 19.462 114 77
Bailey {'Female'} false 68 130 2239 19.766 113 81
Создайте BloodPressure
переменная для удержания показаний артериального давления в табличной переменной 100 на 2.
T.BloodPressure = [T.Systolic T.Diastolic];
Удалить Systolic
и Diastolic
из таблицы, так как они избыточны.
T.Systolic = []; T.Diastolic = []; T(1:5,:)
ans=5×7 table
Gender Smoker Height Weight ID BMI BloodPressure
__________ ______ ______ ______ ____ ______ _____________
Adams {'Female'} false 66 137 8235 22.112 127 83
Alexander {'Male' } true 69 171 1300 25.252 128 99
Allen {'Female'} false 63 143 7432 25.331 113 80
Anderson {'Female'} false 68 128 1577 19.462 114 77
Bailey {'Female'} false 68 130 2239 19.766 113 81
Поставить ID
в качестве первого столбца переупорядочить табличные переменные по положениям.
T = T(:,[5 1:4 6 7]); T(1:5,:)
ans=5×7 table
ID Gender Smoker Height Weight BMI BloodPressure
____ __________ ______ ______ ______ ______ _____________
Adams 8235 {'Female'} false 66 137 22.112 127 83
Alexander 1300 {'Male' } true 69 171 25.252 128 99
Allen 7432 {'Female'} false 63 143 25.331 113 80
Anderson 1577 {'Female'} false 68 128 19.462 114 77
Bailey 2239 {'Female'} false 68 130 19.766 113 81
Вы также можете переупорядочить табличные переменные по имени. Переупорядочить табличные переменные так, чтобы Gender
является последним:
Поиск 'Gender'
в VariableNames
свойство таблицы.
Переместить 'Gender'
в конец массива ячеек с именами переменных.
Используйте массив ячеек имен, чтобы переупорядочить табличные переменные.
varnames = T.Properties.VariableNames; others = ~strcmp('Gender',varnames); varnames = [varnames(others) 'Gender']; T = T(:,varnames);
Отображение первых пяти строк переупорядоченной таблицы.
T(1:5,:)
ans=5×7 table
ID Smoker Height Weight BMI BloodPressure Gender
____ ______ ______ ______ ______ _____________ __________
Adams 8235 false 66 137 22.112 127 83 {'Female'}
Alexander 1300 true 69 171 25.252 128 99 {'Male' }
Allen 7432 false 63 143 25.331 113 80 {'Female'}
Anderson 1577 false 68 128 19.462 114 77 {'Female'}
Bailey 2239 false 68 130 19.766 113 81 {'Female'}
Можно записать всю таблицу в файл или создать подтаблицу, чтобы записать выбранный фрагмент исходной таблицы в отдельный файл.
Запись T
в файл со writetable
функция.
writetable(T,'allPatientsBMI.txt');
Можно использовать readtable
функция для чтения данных в allPatientsBMI.txt
в новую таблицу.
Создайте подтаблицу и запишите подтаблицу в отдельный файл. Удалите строки, которые содержат данные о пациентах, которые являются курильщиками. Затем удалите Smoker
переменная. nonsmokers
содержит данные только для пациентов, которые не курят.
nonsmokers = T; toDelete = (nonsmokers.Smoker == true); nonsmokers(toDelete,:) = []; nonsmokers.Smoker = [];
Запись nonsmokers
в файл.
writetable(nonsmokers,'nonsmokersBMI.txt');
array2table
| cell2table
| Инструмент для импорта | readtable
| sortrows
| struct2table
| summary
| table
| writetable