exponenta event banner

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

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

Загрузить данные образца.

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

См. также

| |

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

Подробнее