В этом примере показано, как создать таблицу из переменных рабочей области, работать с данными таблицы и записывать таблицы в файлы для последующего использования. table является типом данных для сбора разнородных данных и свойств метаданных, таких как имена переменных, имена строк, описания и единицы измерения переменных, в одном контейнере.
Таблицы подходят для ориентированных на столбцы или табличных данных, которые часто хранятся как столбцы в текстовом файле или в электронной таблице. Каждая переменная в таблице может иметь различный тип данных, но должно иметь одинаковое количество строк. Однако переменные в таблице не ограничиваются векторами столбцов. Например, переменная таблицы может содержать матрицу с несколькими столбцами, если она имеет такое же количество строк, как и другие переменные таблицы. Обычно таблица используется для хранения экспериментальных данных, где строки представляют различные наблюдения, а столбцы представляют различные измеряемые переменные.
Таблицы являются удобными контейнерами для сбора и организации связанных переменных данных, а также для просмотра и суммирования данных. Например, можно извлечь переменные для выполнения вычислений и удобно добавить результаты в виде новых переменных таблицы. По завершении вычислений запишите таблицу в файл для сохранения результатов.
Создайте таблицу из переменных рабочей области и просмотрите ее. Либо используйте инструмент импорта или readtable для создания таблицы из электронной таблицы или текстового файла. При импорте данных из файла с помощью этих функций каждый столбец становится переменной таблицы.
Загрузить данные выборки для 100 пациентов из patients MAT-файл для переменных рабочей области.
load patients
whosName 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