Добавьте и удалите наблюдения

В этом примере показано, как добавить и удалить наблюдения в массиве набора данных. Можно также отредактировать массивы набора данных с помощью редактора Переменных.

Загрузка демонстрационных данных.

Импортируйте данные из первого рабочего листа в 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     5
Массив набора данных теперь имеет тот меньше наблюдения.

Смотрите также

| |

Связанные примеры

Больше о