テーブル行の追加と削除
この例では、テーブルで行を追加および削除する方法を示します。また、変数エディターを使用してテーブルを編集することもできます。
サンプル データの読み込み
サンプルの患者データを読み込んで table T
を作成します。
load patients
T = table(LastName,Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
size(T)
ans = 1×2
100 8
table T
には 100 行で 8 個の変数が含まれています。
連結による行の追加
さらに多くの患者のデータを、コンマ区切りファイル morePatients.csv
から table T2
に読み込みます。次に、T2
の行を table T の末尾に追加します。
T2 = readtable('morePatients.csv');
Tnew = [T;T2];
size(Tnew)
ans = 1×2
104 8
table Tnew
には 104 行あります。2 つのテーブルを垂直に連結するには、両方のテーブルの変数の数が同じで、変数名も同じでなければなりません。変数名が異なる場合は、テーブルの新しい行を別のテーブルの行に直接割り当てることができます。たとえば、T(end+1:end+4,:) = T2
のようになります。
cell 配列からの行の追加
cell 配列に格納されている新しい行を追加するには、cell 配列を table の末尾に垂直に連結します。cell 配列の列数が正しいときは、cell 配列から直接連結でき、セルの内容を対応する table 変数に連結できます。
cellPatients = {'Trujillo','Male',42,70,158,0,116,83; 'Falk','Female',28,62,125,1,120,71}; Tnew = [Tnew;cellPatients]; size(Tnew)
ans = 1×2
106 8
また、関数 cell2table
を使用して、cell 配列を table に変換することもできます。
構造体からの行の追加
構造体に格納されている新しい行を付加することもできます。構造体をテーブルに変換してから、テーブルを連結します。
structPatients(1,1).LastName = 'George'; structPatients(1,1).Gender = 'Nonbinary'; structPatients(1,1).Age = 45; structPatients(1,1).Height = 76; structPatients(1,1).Weight = 182; structPatients(1,1).Smoker = 1; structPatients(1,1).Systolic = 132; structPatients(1,1).Diastolic = 85; structPatients(2,1).LastName = 'Russo'; structPatients(2,1).Gender = 'Female'; structPatients(2,1).Age = 29; structPatients(2,1).Height = 58; structPatients(2,1).Weight = 120; structPatients(2,1).Smoker = 0; structPatients(2,1).Systolic = 112; structPatients(2,1).Diastolic = 70; Tnew = [Tnew;struct2table(structPatients)]; size(Tnew)
ans = 1×2
108 8
重複行の削除
table 内で重複している行をすべて削除するには、関数 unique
を使用します。
Tnew = unique(Tnew); size(Tnew)
ans = 1×2
107 8
unique
によって重複している 2 つの行が削除されました。
行番号による行の削除
テーブルから行 18、20、21 を削除します。
Tnew([18,20,21],:) = []; size(Tnew)
ans = 1×2
104 8
テーブルに含まれている患者の情報が 103 名分になりました。
行名による行の削除
まず、識別子の変数 LastName
を行名として指定します。次に、変数 LastName
を Tnew
から削除します。最後に、行名を使用してインデックスを付けてから行を削除します。
Tnew.Properties.RowNames = Tnew.LastName;
Tnew.LastName = [];
Tnew('Smith',:) = [];
size(Tnew)
ans = 1×2
103 7
テーブルの行数が 1 つ少なくなり、変数も 1 つ少なくなります。
削除する行の検索
テーブルの観測値を検索することもできます。たとえば、30 才未満の患者の行をすべて削除します。
toDelete = Tnew.Age < 30; Tnew(toDelete,:) = []; size(Tnew)
ans = 1×2
86 7
テーブルの行数が 17 行分少なくなります。
参考
table
| readtable
| array2table
| cell2table
| struct2table