Добавление и удаление наблюдений

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

Загрузите выборочные данные.

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

См. также

| |

Похожие примеры

Подробнее о