Main Content

テーブル行の追加と削除

この例では、テーブルで行を追加および削除する方法を示します。また、変数エディターを使用してテーブルを編集することもできます。

サンプル データの読み込み

サンプルの患者データを読み込んで 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 を行名として指定します。次に、変数 LastNameTnew から削除します。最後に、行名を使用してインデックスを付けてから行を削除します。

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 行分少なくなります。

参考

| | | |

関連するトピック