В этом примере показано, как добавить и удалить строки в таблице. Можно также отредактировать таблицы с помощью Редактора Переменных.
Загрузите демонстрационные данные пациентов и составьте таблицу, T
.
load patients
T = table(LastName,Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
size(T)
ans = 1×2
100 8
Таблица, T
, имеет 100 строк и восемь переменных (столбцы).
Считайте данные на большем количестве пациентов от файла разделенных запятыми значений, morePatients.csv
, в таблицу, T2
. Затем добавьте строки от T2
в конец таблицы, T.
T2 = readtable('morePatients.csv');
Tnew = [T;T2];
size(Tnew)
ans = 1×2
104 8
Таблица Tnew
имеет 104 строки. Для того, чтобы вертикально конкатенировать две таблицы, обе таблицы должны иметь то же количество переменных с теми же именами переменных. Если имена переменных отличаются, можно непосредственно присвоить новые строки в таблице к строкам из другой таблицы. Например, T(end+1:end+4,:) = T2
.
Чтобы добавить новые строки, сохраненные в массиве ячеек, вертикально конкатенируйте массив ячеек на конец таблицы. Можно конкатенировать непосредственно от массива ячеек, когда он имеет правильное количество столбцов, и содержимое его ячеек может быть конкатенировано на соответствующие табличные переменные.
cellPatients = {'Edwards','Male',42,70,158,0,116,83; 'Falk','Female',28,62,125,1,120,71}; Tnew = [Tnew;cellPatients]; size(Tnew)
ans = 1×2
106 8
Также можно преобразовать массив ячеек в таблицу с помощью cell2table
функция.
Также можно добавить новые строки, сохраненные в структуре. Преобразуйте структуру в таблицу, и затем конкатенируйте таблицы.
structPatients(1,1).LastName = 'George'; structPatients(1,1).Gender = 'Male'; structPatients(1,1).Age = 45; structPatients(1,1).Height = 76; structPatients(1,1).Weight = 182; structPatients(1,1).Smoker = 1; structPatients(1,1).Systolic = 132; structPatients(1,1).Diastolic = 85; structPatients(2,1).LastName = 'Hadley'; structPatients(2,1).Gender = 'Female'; structPatients(2,1).Age = 29; structPatients(2,1).Height = 58; structPatients(2,1).Weight = 120; structPatients(2,1).Smoker = 0; structPatients(2,1).Systolic = 112; structPatients(2,1).Diastolic = 70; Tnew = [Tnew;struct2table(structPatients)]; size(Tnew)
ans = 1×2
108 8
Чтобы не использовать любые строки в таблице, которые дублированы, используйте unique
функция.
Tnew = unique(Tnew); size(Tnew)
ans = 1×2
106 8
unique
удаленный две дублирующихся строки.
Удалите строки 18, 20, и 21 из таблицы.
Tnew([18,20,21],:) = []; size(Tnew)
ans = 1×2
103 8
Таблица содержит информацию о 103 пациентах теперь.
Во-первых, задайте переменную идентификаторов, LastName
, как имена строки. Затем удалите переменную, LastName
, от Tnew
. Наконец, используйте имя строки, чтобы индексировать и удалить строки.
Tnew.Properties.RowNames = Tnew.LastName;
Tnew.LastName = [];
Tnew('Smith',:) = [];
size(Tnew)
ans = 1×2
102 7
Таблица теперь имеет тот меньше строки и один меньше переменной.
Также можно искать наблюдения в таблице. Например, удалите строки для любых пациентов моложе 30.
toDelete = Tnew.Age < 30; Tnew(toDelete,:) = []; size(Tnew)
ans = 1×2
85 7
Таблица теперь имеет 17 меньше строк.
array2table
| cell2table
| readtable
| struct2table
| table