観測値の追加と削除
この例では、データセット配列内の観測値の追加と削除を行う方法を示します。また、変数エディターでデータセット配列を編集することもできます。
標本データを読み込みます。
hospitalSmall.xlsx
の最初のワークシートからデータセット配列にデータをインポートします。
ds = dataset('XLSFile',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.xlsx')); size(ds)
ans = 14 6
データセット配列 ds
には 14 件の観測 (行) と 6 個の変数 (列) があります。
連結により観測を追加します。
hospitalSmall.xlsx
の 2 番目のワークシートには追加の患者データがあります。このスプレッドシートの観測を ds
の末尾に付加します。
ds2 = dataset('XLSFile',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.xlsx'),'Sheet',2); dsNew = [ds;ds2]; size(dsNew)
ans = 22 6
データセット配列 dsNew
には 22 件の観測値があります。2 つのデータセット配列を垂直に連結するには、両方の配列の変数の数が同じで、変数名も同じでなければなりません。
cell 配列から観測を追加します。
cell 配列に格納されている新しい観測を付加するには、まず cell 配列をデータセット配列に変換してから、データセット配列を連結します。
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
重複していた観測が 1 件削除されています。
観測番号に基づいて観測値を削除します。
データセット配列から観測値 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
データセット配列の観測数が 1 件少なくなり、変数も 1 個少なくなります。
削除する観測を検索します。
データセット配列の観測を検索することもできます。たとえば、WILLIAMS
という姓の患者の観測をすべて削除します。
toDelete = strcmp(dsNew.name,'WILLIAMS');
dsNew(toDelete,:) = [];
size(dsNew)
ans = 16 5
参考
dataset
| cell2dataset
| struct2dataset