Main Content

データセット配列のインデックス処理と検索

メモ

dataset データ型は推奨されません。異種混合データを処理するには、代わりに MATLAB® table データ型を使用します。詳細は、MATLAB table ドキュメンテーションを参照してください。

インデックス処理と検索の方法

データセット配列のインデックス処理を行う方法は多数あります。たとえば、データセット配列 ds に対して、次のことができます。

  • () を使用して、ds のサブセットから新しいデータセット配列を作成する。たとえば、ds1 = ds(1:5,:) と指定すると、新しいデータセット配列 ds1 が作成され、ds の最初の 5 行が格納されます。メタデータ (変数名や観測名など) は新しいデータセット配列に伝達されます。

  • 変数名をドット表記で使用して、データセット配列内の個々の変数をインデックス処理する。たとえば、ds.Height と指定すると Height という変数をインデックスに使用します。

  • 観測名を使用して、データセット配列内の個々の観測をインデックス処理する。たとえば、ds('Obs1',:) と指定すると Obs1 という観測名のデータが得られます。

  • 観測番号または変数番号を使用する。たとえば、ds(:,[1,3,5]) と指定すると、ds の 1 番目、3 番目、5 番目の変数 (列) のデータが得られます。

  • 論理インデックスを使用して、ds のうち論理条件を満たす観測値を検索する。たとえば、ds(ds.Gender=='Male',:) と指定すると、ds の観測のうち、変数 Gender (ノミナル配列) の値が Male であるものが返されます。

  • ismissing を使用して、データセット配列内の欠損データを検索する。

一般的なインデックス付けと検索の方法

この例では、categorical 配列でのインデックス付けと検索の方法をいくつか紹介します。

標本データを読み込みます。

load hospital;
size(hospital)
ans = 1×2

   100     7

このデータセット配列には 100 件の観測値と 7 個の変数があります。

名前に基づいて変数をインデックス処理します。データセット配列の年齢の最小値を返します。

min(hospital.Age)
ans = 25

変数 Trials を削除します。

hospital.Trials = [];
size(hospital)
ans = 1×2

   100     6

名前に基づいて観測値をインデックス処理します。PUE-347 という名前の観測値について、最初の 5 つの変数の測定値を表示します。

hospital('PUE-347',1:5)
ans = 
               LastName         Sex       Age    Weight    Smoker
    PUE-347    {'YOUNG'}        Female    25     114       false 

番号に基づいて変数をインデックス処理します。hospital の最初の 4 つの変数が格納される新しいデータセット配列を作成します。

dsNew = hospital(:,1:4);
dsNew.Properties.VarNames(:)
ans = 4x1 cell
    {'LastName'}
    {'Sex'     }
    {'Age'     }
    {'Weight'  }

番号に基づいて観測値をインデックス処理します。最後の 10 件の観測値を削除します。

hospital(end-9:end,:) = [];
size(hospital)
ans = 1×2

    90     6

論理条件により観測値を検索します。喫煙する女性の情報だけを格納する新しいデータセット配列を作成します。

dsFS = hospital(hospital.Sex=='Female' & hospital.Smoker==true,:);
dsFS(:,{'LastName','Sex','Smoker'})
ans = 
               LastName             Sex       Smoker
    LPD-746    {'MILLER'   }        Female    true  
    XBR-291    {'GARCIA'   }        Female    true  
    AAX-056    {'LEE'      }        Female    true  
    DTT-578    {'WALKER'   }        Female    true  
    AFK-336    {'WRIGHT'   }        Female    true  
    RBA-579    {'SANCHEZ'  }        Female    true  
    HAK-381    {'MORRIS'   }        Female    true  
    NSK-403    {'RAMIREZ'  }        Female    true  
    ILS-109    {'WATSON'   }        Female    true  
    JDR-456    {'SANDERS'  }        Female    true  
    HWZ-321    {'PATTERSON'}        Female    true  
    GGU-691    {'HUGHES'   }        Female    true  
    WUS-105    {'FLORES'   }        Female    true  

参考

関連する例

詳細