ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

テーブル内のデータへのアクセス

テーブルのインデックス方法

テーブルは、行数が同じである列方向の変数を格納するためのコンテナーです。小かっこを使用すると、table 内のデータのサブセットを選択して、テーブル コンテナーを保持することができます。中かっこおよびドット インデックスを使用すると、データを table から抽出することができます。

中かっこを使用する場合、作成される配列は、指定された行のみを含む指定されたテーブル変数の水平連結です。指定されるすべての変数のデータ型は連結に対応しているものでなければなりません。その後、MATLAB® 関数を使用して計算を実行することができます。

ドット インデックスは、1 つのテーブル変数からデータを抽出します。その結果、抽出された変数と同じデータ型の配列が作成されます。ドット インデックスの後に続けて小かっこを使用して、変数から抽出する行のサブセットを指定することができます。

T.Variables は、すべての table 変数を水平方向に連結して 1 つの配列にします。T.VariablesT{:,:} と等価です。

table に添字を付けて指定したタイプの変数を選択するには、関数 vartype を使用します。

テーブル インデックス方法の概要

T というテーブルを見てみましょう。

インデックスのタイプ結果構文変数
小かっこテーブルT(rows,vars)

rows で指定された 1 つ以上の行

vars で指定された 1 つ以上の変数

中かっこ抽出されたデータT{rows,vars}

rows で指定された 1 つ以上の行

vars で指定された 1 つ以上の変数

ドット インデックス抽出されたデータ

T.var

T.(varindex)

すべての行

var (名前) または varindex (数値) で指定された 1 つの変数

ドット インデックス抽出されたデータ

T.var(rows)

rows で指定された 1 つ以上の行

var (名前) で指定された 1 つの変数

Variables プロパティ抽出されたデータ

T.Variables

すべての行

水平方向に連結して 1 つの配列にできる場合はすべての変数

変数の型による添字テーブル

S = vartype(type);

T(rows,S)

rows で指定された 1 つ以上の行

指定した type ('numeric' など) の 1 つ以上の変数

変数の型による添字抽出されたデータ

S = vartype(type);

T{rows,S}

rows で指定された 1 つ以上の行

指定した type ('numeric' など) の 1 つ以上の変数

アクセスする行の指定方法

小かっこ、中かっこまたはドット インデックスを使用して table にインデックスを付ける場合は、rows をコロン、数値インデックスまたは論理式として指定することができます。さらに、単一の行名または行名の cell 配列を使用して、名前によってインデックスを付けることができます。

論理式に中かっこまたはドット インデックスを含めて、行のサブセットを定義できるデータを抽出することができます。たとえば、rows = T.Var2>0 は、変数 Var2 の値がゼロより大きい行について論理値 true (1) をもつ logical 配列を返します。

アクセスする変数の指定方法

小かっこまたは中かっこを使用して table にインデックスを付ける場合、vars をコロン、数値インデックス、論理式、単一の変数名、変数名の cell 配列、または関数 vartype の出力として指定できます。

ドット インデックスを使用する場合は、アクセスする単一の変数を指定する必要があります。単一の変数名には、T.var を使用します。正の整数として指定する単一の変数インデックスには、T.(varindex) を使用します。

大きいテーブルのサブセットからのテーブルの作成

この例では、大きい table のサブセットから table を作成する方法を示します。

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

サンプルの患者データを読み込んでテーブルを作成します。LastName の一意の識別子を行名として使用します。

load patients

patients = table(Age,Gender,Height,Weight,Smoker,...
    'RowNames',LastName);

table patients には 100 行と 5 個の変数が含まれています。

summary を使用して、各変数のデータ型、説明、単位およびその他の記述統計を table にまとめます。

summary(patients)
Variables:

    Age: 100x1 double

        Values:

            Min        25  
            Median     39  
            Max        50  

    Gender: 100x1 cell array of character vectors

    Height: 100x1 double

        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Values:

            Min          111  
            Median     142.5  
            Max          202  

    Smoker: 100x1 logical

        Values:

            True        34   
            False       66   

数値インデックスによるインデックス付け

table patients の最初の 5 行とすべての変数を含むサブテーブルを作成します。小かっこ内の数値インデックスを使用して、必要な行と変数を指定します。これは、数値配列でのインデックス付けと同様です。

T1 = patients(1:5,:)
T1=5×5 table
                Age     Gender     Height    Weight    Smoker
                ___    ________    ______    ______    ______

    Smith       38     'Male'        71       176      true  
    Johnson     43     'Male'        69       163      false 
    Williams    38     'Female'      64       131      false 
    Jones       40     'Female'      67       133      false 
    Brown       49     'Female'      64       119      false 

T1 は、5 行 5 列の table です。数値インデックスに加え、行名や変数名を小かっこ内で使用することができます。この場合、行インデックスとコロンを使用する方が行名や変数名を使用するよりもコンパクトです。

名前によるインデックス付け

姓が 'Adams' および 'Brown' である患者に関するすべてのデータを選択します。この場合、行名を使用する方が数値インデックスを使用するよりも簡単です。

T2 = patients({'Adams','Brown'},:)
T2=2×5 table
             Age     Gender     Height    Weight    Smoker
             ___    ________    ______    ______    ______

    Adams    48     'Female'      66       137      false 
    Brown    49     'Female'      64       119      false 

T2 は、2 行 5 列の table です。

論理式によるインデックス付け

30 才未満の患者の性別、身長および体重が含まれている新しい table T3 を作成します。変数 Age の値が 30 未満の行のみを選択します。

ドット表記を使用してテーブル変数からデータを抽出し、論理式を使用して、抽出されたデータに基づいて行のサブセットを定義します。

rows = patients.Age<30;
vars = {'Gender','Height','Weight'};

rows は、変数 Age の値が 30 未満の行について論理値 true (1) をもつ 100 行 1 列の logical 配列です。

小かっこを使用して、必要なデータのサブセットを含む table を返します。

T3 = patients(rows,vars)
T3=15×3 table
                  Gender     Height    Weight
                 ________    ______    ______

    Moore        'Male'        68       183  
    Jackson      'Male'        71       174  
    Garcia       'Female'      69       131  
    Walker       'Female'      65       123  
    Hall         'Male'        70       189  
    Young        'Female'      63       114  
    Hill         'Female'      64       138  
    Rivera       'Female'      63       130  
    Cooper       'Female'      65       127  
    Cox          'Female'      66       111  
    Howard       'Female'      68       134  
    James        'Male'        66       186  
    Jenkins      'Male'        69       189  
    Perry        'Female'      64       120  
    Alexander    'Male'        69       171  

T3 は、15 行 3 列の table です。

table の内容からの配列の作成

この例では、中かっこまたはドット インデックスを使用してテーブルの内容を抽出する方法を示します。

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

サンプルの患者データを読み込んでテーブルを作成します。LastName の一意の識別子を行名として使用します。

load patients

patients = table(Age,Gender,Height,Weight,Smoker,...
    'RowNames',LastName);

table patients には 100 行と 5 個の変数が含まれています。

複数の行と複数の変数の抽出

中かっこを使用して、table patients 内の複数の変数からデータを抽出します。ドット インデックスでは一度に 1 つの変数からデータが抽出されるので、複数の変数からデータを抽出する場合は中かっこを使用する方が便利です。

最初の 5 名の患者の身長と体重を抽出します。数値インデックスを使用して行のサブセット 1:5 を選択し、変数名を使用して変数のサブセット {Height,Weight} を選択します。

A = patients{1:5,{'Height','Weight'}}
A = 5×2

    71   176
    69   163
    64   131
    67   133
    64   119

A は 5 行 2 列の数値配列です。

1 つの変数からのデータの抽出

ドット インデックスを使用すると、単一の変数の内容を簡単に抽出することができます。変数 Weight の数値データのヒストグラムをプロットします。

figure()
histogram(patients.Weight)
title(' Patient Weight')

patients.Weight は、100 行を含む倍精度の列ベクトルです。あるいは、patients{:,'Weight'} というように中かっこを使用して、変数 Weight のすべての行を抽出することができます。

単一の変数の行のサブセットを指定するには、ドット インデックスの後に続けて小かっこまたは中かっこを使用します。30 才未満の非喫煙患者の身長データを抽出します。

ドット表記を使用してテーブル変数からデータを抽出し、論理式を使用して、抽出されたデータに基づいて行のサブセットを定義します。

rows = patients.Smoker==false & patients.Age<30;

ドット表記を使用して、必要な行を変数 Height から抽出します。

patients.Height(rows)
ans = 11×1

    68
    71
    70
    63
    64
    63
    65
    66
    68
    66
      ⋮

11 行 1 列の数値配列が出力されます。あるいは、単一の変数 Height を中かっこ内に指定して、必要なデータ patients{rows,'Height'} を抽出することができます。

参考

| |

関連する例

詳細