В этом примере показано, как добавить и удалить наблюдения в массиве набора данных. Можно также отредактировать массивы набора данных с помощью редактора Переменных.
Импортируйте данные из первого рабочего листа в hospitalSmall.xlsx в массив набора данных.
ds = dataset('XLSFile',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.xlsx')); size(ds)
ans =
14 6Массив набора данных, ds, имеет 14 наблюдений (строки) и 6 переменных (столбцы).
Второй рабочий лист в hospitalSmall.xlsx имеет дополнительные данные о пациентах. Добавьте наблюдения в этой электронной таблице в конец ds.
ds2 = dataset('XLSFile',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.xlsx'),'Sheet',2); dsNew = [ds;ds2]; size(dsNew)
ans =
22 6Массив набора данных dsNew имеет 22 наблюдения. Для того, чтобы вертикально конкатенировать два массива набора данных, оба массива должны иметь то же количество переменных с теми же именами переменных.
Если вы хотите добавить новые наблюдения, сохраненные в массиве ячеек, сначала преобразовать массив ячеек в массив набора данных, и затем конкатенировать массивы набора данных.
cellObs = {'id','name','sex','age','wgt','smoke';
'YQR-965','BAKER','M',36,160,0;
'LFG-497','WALL' ,'F',28,125,1;
'KSD-003','REED' ,'M',32,187,0};
dsNew = [dsNew;cell2dataset(cellObs)];
size(dsNew)ans =
25 6Можно также добавить новые наблюдения, сохраненные в структуре. Преобразуйте структуру в массив набора данных, и затем конкатенируйте массивы набора данных.
structObs(1,1).id = 'GHK-842'; structObs(1,1).name = 'GEORGE'; structObs(1,1).sex = 'M'; structObs(1,1).age = 45; structObs(1,1).wgt = 182; structObs(1,1).smoke = 1; structObs(2,1).id = 'QRH-308'; structObs(2,1).name = 'BAILEY'; structObs(2,1).sex = 'F'; structObs(2,1).age = 29; structObs(2,1).wgt = 120; structObs(2,1).smoke = 0; dsNew = [dsNew;struct2dataset(structObs)]; size(dsNew)
ans =
27 6Используйте unique удалить любые наблюдения в массиве набора данных, которые дублированы.
dsNew = unique(dsNew); size(dsNew)
ans =
21 6
Одно дублированное наблюдение удалено.
Удалите наблюдения 18, 20, и 21 от массива набора данных.
dsNew([18,20,21],:) = []; size(dsNew)
ans =
18 6Массив набора данных имеет только 18 наблюдений теперь.
Во-первых, задайте переменную идентификаторов, id, как имена наблюдения. Затем удалите переменную id от dsNew. Можно использовать имя наблюдения, чтобы индексировать наблюдения.
dsNew.Properties.ObsNames = dsNew.id;
dsNew.id = [];
dsNew('KOQ-996',:) = [];
size(dsNew)ans =
17 5Массив набора данных теперь имеет тот меньше наблюдения и один меньше переменной.
Можно также искать наблюдения в массиве набора данных. Например, удалите наблюдения для любых пациентов с фамилией WILLIAMS.
toDelete = strcmp(dsNew.name,'WILLIAMS');
dsNew(toDelete,:) = [];
size(dsNew)ans =
16 5dataset | cell2dataset | struct2dataset