Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

table

異なる型を含むことができる名前付き変数をもつ table 配列

説明

配列 table は、テキスト ファイルやスプレッドシートの列など、列方向データや表形式データを格納します。table は、"変数" にそれぞれの列方向データを格納します。table 変数は、すべての変数の行数が同じであれば、データ型とサイズはそれぞれ異なっていてもかまいません。構造体のフィールドに名前があるのと同様に、table 変数にも名前があります。関数 summary を使用して、table に関する情報を取得します。

表形式データにタイムスタンプが含まれている場合は、timetableを使用してデータを格納および解析することを検討してください。

table の内容をインデックスで参照するには、小かっこ () を使用してサブテーブルを返すか、または中かっこ {} を使用して内容を抽出します。名前を使用して変数と行にアクセスできます。番号と名前をインデックスとして使用する参照の詳細については、table 内のデータへのアクセスを参照してください。

作成

ファイルからデータを table に読み取るには、関数 Import Tool または関数 readtable を使用できます。あるいは、以下に説明する関数 table を使用して、既存のワークスペース変数から table を作成します。

また、後で値を入力する変数用にスペースを許容する table を作成することもできます。変数用にスペースが事前に割り当てられた table を作成するには、後述のとおり、関数 table'Size' を最初の入力引数として指定します。

説明

T = table(var1,...,varN) は、入力変数 var1,...,varN から table を作成します。変数にはさまざまなサイズとデータ型を使用できます。ただし、すべての変数の行数が同じでなければなりません。

入力がワークスペース変数の場合、table はそれらの名前を出力 table の変数名として割り当てます。それ以外の場合、table'Var1',...,'VarN' の形式の変数名を割り当てます。ここで、N は変数の数です。

T = table('Size',sz,'VariableTypes',varTypes) は、table を作成し、指定のデータ型の変数用にスペースを事前に割り当てます。sz は 2 要素の数値配列で、sz(1) は行数を指定し、sz(2) は変数の数を指定します。varTypes は変数のデータ型を指定します。

T = table(___,Name,Value) は、名前と値のペアの引数を 1 つ以上使用して追加の入力引数を指定します。たとえば、名前と値のペア 'VariableNames' を使用して変数名を指定することができます。この構文では、前述の構文の入力引数のいずれかを使用できます。

T = table は、0 行 0 列の空の table を作成します。

入力引数

すべて展開する

入力変数。同じ数の行をもつ配列として指定します。入力変数には、さまざまなサイズとデータ型を使用できます。

一般的な入力変数は、数値配列、logical 配列、文字配列、構造体配列または cell 配列です。入力変数には、配列のオブジェクトを使用することもできます。この配列は var(index1,...,indexN) の形式のインデックスをサポートしていなければなりません。index1 は変数 var の行に対応する数値または logical ベクトルです。さらにこの配列は、vertcat メソッドと、dim 引数をもつ size メソッドの両方を実装していなければなりません。

例: table([1:4]',ones(4,3,2),eye(4,2)) は、サイズが異なる 4 行の変数から table を作成します。

例: table([1:3]',{'one';'two';'three'},categorical({'A';'B';'C'})) は、データ型が異なる 3 つの行をもつ変数から table を作成します。

事前に割り当てられる table のサイズ。2 要素の数値ベクトルとして指定します。sz の最初の要素は行数を指定し、2 番目の要素は table 変数の数を指定します。

行を作成せずに変数のみを作成するには、sz の最初の要素を 0 に指定します。

例: T = table('Size',[50 3],'VariableTypes',{'string','double','datetime'}) は、string 配列、double 配列、datetime 配列を含む table に 50 行を事前に割り当てます。

例: T = table('Size',[0 4],'VariableTypes',varTypes) は、行数 0 と変数 4 つを指定します。

事前に割り当てられた変数のデータ型。文字ベクトルの cell 配列または string 配列として指定します。varTypes で指定する型の数は、sz の 2 番目の要素で指定する変数の数と等しくなければなりません。

varTypes には、次の表に示す名前を含む、任意のデータ型の名前を格納できます。

データ型名

各要素の初期値

'double', 'single'

倍精度または単精度の 0

'doublenan', 'doubleNaN', 'singlenan', 'singleNaN'

倍精度または単精度の NaN

'int8', 'int16', 'int32', 'int64'

符号付き 8、16、32、64 ビットの整数 0

'uint8', 'uint16', 'uint32', 'uint64'

符号なし 8、16、32、64 ビットの整数 0

'logical'

0 (false)

'categorical'

<undefined> categorical 値

'datetime'

NaT datetime

'duration'

0 秒 (duration 値として)

'calendarDuration'

0 日 (calendarDuration 値として)

'string'

"" (文字を含まない 1 行 1 列の string)

'cellstr'

{''} (0 行 0 列の文字配列を含む cell)

'cell'

{[]} (0 行 0 列の double 配列を含む cell)

'struct'

フィールドをもたないスカラー構造体

'table'

変数をもたない table

'timetable'

変数をもたず、行時間に NaT をもつ timetable

他すべてのデータ型で、初期値は、配列の未代入の要素を "埋める" ためにその型またはクラスで使用される値となります。

データ型として 'char' を指定した場合、table は対応する変数を文字配列ではなく文字ベクトルの cell 配列として事前に割り当てます。文字配列である table 変数または timetable 変数は作成しないことをお勧めします。table または timetable 内のテキスト データを扱う際には、string 配列または categorical 配列を使用することを検討してください。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: T = table(Age,Height,Weight,'RowNames',LastName) は、変数 LastName で指定された行名をもつ table を作成します。

変数名。要素が空ではない一意の文字ベクトルの cell 配列または string 配列として指定します。

  • 配列内の名前の数は、table 変数の数と等しくなければなりません。

  • 関数 table も、table の VariableNames プロパティに変数名を保存します。

  • 変数名には、スペースや非 ASCII 文字を含め、どんな Unicode® 文字でも使用することができます。

例: T = table(lat,lon,'VariableNames',["Latitude","Longitude"]) は、入力配列 lat および lon から table を作成し、対応する table 変数の名前を Latitude および Longitude に設定します。

行名。要素が空ではない一意の文字ベクトルの cell 配列または string 配列として指定します。

  • 配列内の名前の数は、行数と等しくなければなりません。

  • 関数 table も、table の RowNames プロパティに行名を保存します。

  • 行名には、空白や非 ASCII 文字を含む任意の Unicode 文字を使用できます。

  • 関数 table は、行名から先頭または末尾の空白文字をすべて削除します。

例: T = table(Age,Height,Weight,'RowNames',LastName) は、変数 LastName で指定された行名をもつ table を作成します。

"R2021a 以降"

次元名。要素が空ではない一意の文字ベクトルの 2 要素 cell 配列または 2 要素 string 配列として指定します。

  • 関数 table も、table の DimensionNames プロパティに次元名を保存します。

  • 次元名には、スペース、非 ASCII 文字を含む任意の Unicode 文字を使用できます。

R2021a より前は、DimensionNames プロパティの設定によってのみ、次元名を指定できます。

例: T = table(Age,Height,Weight,'RowNames',LastName,'DimensionNames',["PatientName","PatientData"]) は、最初の次元の名前が "PatientName" で 2 番目の次元の名前が "PatientData" である table を作成します。

プロパティ

すべて展開する

table のメタデータ プロパティにアクセス

table には、table とその変数について記述するメタデータ プロパティがあります。これらのプロパティにアクセスするには、構文 tableName.Properties.PropertyName を使用します。ここで、PropertyName はプロパティの名前です。たとえば、構文 T.Properties.VariableNames を使用すると、テーブル T 内の変数の名前にアクセスできます。

構文 tableName.Properties を使用すると、すべてのメタデータ プロパティの概要を返すことができます。

table のデータにはドット構文を使用して直接アクセスできるため、Properties プロパティを使って table のメタデータにアクセスすることが可能です。たとえば、table TVar1 という名前の変数がある場合、構文 T.Var1 を使用してこの変数の値にアクセスできます。

table メタデータ

次元名。文字ベクトルの 2 要素 cell 配列または 2 要素 string 配列として指定します。

  • 次元名には、スペース、非 ASCII 文字を含む任意の Unicode 文字を使用できます。

  • string 配列を使用してこのプロパティを指定した場合、文字ベクトルの cell 配列に変換されて保存されます。

2 つの次元名を使用して table のデータにアクセスできます。

  • table に行名があり、ドット構文と最初の次元名を使用する場合、行名にベクトルとしてアクセスできます。

  • ドット構文と 2 番目の次元名を使用する場合、{:,:} 構文を使用して table のインデックスを指定したかのように、すべての変数のデータが 1 つの配列に連結されます。

table を作成して、その次元名を表示します。次元名をドット構文で使用して、行名とデータにアクセスすることができます。

load patients
T = table(Age,Height,Weight,Systolic,Diastolic, ...
          'RowNames',LastName);
T.Properties.DimensionNames
ans = 1x2 cell
    {'Row'}    {'Variables'}

最初の次元名を使用して行名にアクセスします。最初の 5 つの名前を表示します。

T.Row(1:5)
ans = 5x1 cell
    {'Smith'   }
    {'Johnson' }
    {'Williams'}
    {'Jones'   }
    {'Brown'   }

2 番目の次元名を使用してデータにアクセスします。この構文は T{:,:} と等価です。

T.Variables
ans = 100×5

    38    71   176   124    93
    43    69   163   109    77
    38    64   131   125    83
    40    67   133   117    75
    49    64   119   122    80
    46    68   142   121    70
    33    64   142   130    88
    40    68   180   115    82
    28    68   183   115    78
    31    66   132   118    86
      ⋮

Properties.DimensionNames プロパティを使用して、次元の名前を変更します。次元名を変更したら、構文 T.Patient および T.Data を使用して、行名とデータにそれぞれアクセスできます。

T.Properties.DimensionNames = ["Patient","Data"];
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Patient'  'Data'}
           VariableNames: {'Age'  'Height'  'Weight'  'Systolic'  'Diastolic'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {100x1 cell}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

行名。要素が空ではない一意の文字ベクトルの cell 配列または string 配列として指定します。RowNames が空でない場合、行名の数は table の行数と等しくなければなりません。

  • 行名には、空白や非 ASCII 文字を含む任意の Unicode 文字を使用できます。

  • 先頭または末尾に空白文字を持つ行名を割り当てた場合、MATLAB® は行名から空白文字を削除します。

  • 行名は、table を表示すると可視化されます。また、行名をかっこ内または中かっこ内で使用して table データにアクセスできます。

  • 行名にアクセスするもうひとつの方法では、ドット構文で table の最初の次元の名前を使用します。

  • string 配列を使用してこのプロパティを指定した場合、文字ベクトルの cell 配列に変換されて保存されます。

table を作成します。次に、行名を追加してその名前で行にアクセスします。

load patients
T = table(Age,Height,Weight,Smoker,Systolic,Diastolic,SelfAssessedHealthStatus);
T.SelfAssessedHealthStatus = string(SelfAssessedHealthStatus);

Properties.RowNames プロパティを使用して行名を追加します。既定では table に行名はありませんが、随時追加することができます。

T.Properties.RowNames = string(LastName);
head(T,5)
                Age    Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
                ___    ______    ______    ______    ________    _________    ________________________

    Smith       38       71       176      true        124          93              "Excellent"       
    Johnson     43       69       163      false       109          77              "Fair"            
    Williams    38       64       131      false       125          83              "Good"            
    Jones       40       67       133      false       117          75              "Fair"            
    Brown       49       64       119      false       122          80              "Good"            

行名にアクセスするもうひとつの方法では、ドット構文で table の最初の次元名を使用します。最初の 5 つの行名を表示します。

T.Properties.DimensionNames
ans = 1x2 cell
    {'Row'}    {'Variables'}

T.Row(1:5)
ans = 5x1 cell
    {'Smith'   }
    {'Johnson' }
    {'Williams'}
    {'Jones'   }
    {'Brown'   }

行名によって table にインデックスを付けます。

T(["Smith","Brown"],:)
ans=2×7 table
             Age    Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
             ___    ______    ______    ______    ________    _________    ________________________

    Smith    38       71       176      true        124          93              "Excellent"       
    Brown    49       64       119      false       122          80              "Good"            

table の説明。文字ベクトルまたは string スカラーとして指定します。この説明は、関数 summary を使用すると表示されます。

string スカラーを使用してこのプロパティを指定した場合、文字ベクトルに変換されて保存されます。

table を作成します。table の説明を変更します。結果の概要を表示します。

load patients
T = table(LastName,Age,Height,Weight);
T.LastName = string(T.LastName);
T.Properties.Description = "Simulated patient data";
summary(T)
Description:  Simulated patient data

Variables:

    LastName: 100x1 string

    Age: 100x1 double

        Values:

            Min          25   
            Median       39   
            Max          50   

    Height: 100x1 double

        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Values:

            Min          111  
            Median     142.5  
            Max          202  

追加の table 情報。配列として指定します。このプロパティを使用すると、任意の種類のデータを table に付加できます。

table を作成します。table に関連するユーザー データの一部として無名関数を付加します。

load patients
T = table(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic);
formula = @(x) x.^2;
T.Properties.UserData = formula;
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: @(x)x.^2
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {'LastName'  'Age'  'Height'  'Weight'  'Smoker'  'Systolic'  'Diastolic'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

変数のメタデータ

変数名。要素が空ではない一意の文字ベクトルの cell 配列または string 配列として指定します。名前の数は変数の数と等しくなければなりません。

  • 変数名には、スペースや非 ASCII 文字を含め、どんな Unicode 文字でも使用することができます。

  • 変数名は、table を表示するか、関数 summary を使用すると表示されます。また、変数名をかっこ内、中かっこ内またはドット インデックス付きで使用して table データにアクセスできます。

  • string 配列を使用してこのプロパティを指定した場合、文字ベクトルの cell 配列に変換されて保存されます。

既定の変数名で table を作成します。次に、Properties.VariableNames プロパティを使用して名前を変更します。

T = table(["Smith";"Nguyen";"Williams";"Fernandez";"Brown"],[38;43;38;40;49], ...
          [71;69;64;67;64],[176;163;131;133;119])
T=5×4 table
       Var1        Var2    Var3    Var4
    ___________    ____    ____    ____

    "Smith"         38      71     176 
    "Nguyen"        43      69     163 
    "Williams"      38      64     131 
    "Fernandez"     40      67     133 
    "Brown"         49      64     119 

T.Properties.VariableNames = ["LastName","Age","Height","Weight"]
T=5×4 table
     LastName      Age    Height    Weight
    ___________    ___    ______    ______

    "Smith"        38       71       176  
    "Nguyen"       43       69       163  
    "Williams"     38       64       131  
    "Fernandez"    40       67       133  
    "Brown"        49       64       119  

変数を表示および変更するための基本的な方法は、ドット構文を使用して名前により変数にアクセスすることです。

T.Age
ans = 5×1

    38
    43
    38
    40
    49

T.Age(1) = 53
T=5×4 table
     LastName      Age    Height    Weight
    ___________    ___    ______    ______

    "Smith"        53       71       176  
    "Nguyen"       43       69       163  
    "Williams"     38       64       131  
    "Fernandez"    40       67       133  
    "Brown"        49       64       119  

変数の説明。文字ベクトルの cell 配列または string 配列として指定します。このプロパティには空の配列を指定できます。これは既定値です。配列が空でない場合、含まれる要素の数は変数の数と同じでなければなりません。説明がない変数について、空の文字ベクトルまたは空の string を個別に指定できます。

  • 変数の説明は、関数 summary を使用すると表示されます。

  • string 配列を使用してこのプロパティを指定した場合、文字ベクトルの cell 配列に変換されて保存されます。

table を作成します。変数の説明を変更します。結果の概要を表示します。

load patients
T = table(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic);
T.LastName = string(T.LastName);
T.Properties.VariableDescriptions = ["","","","", ...
                                     "Has the patient ever been a smoker", ...
                                     "Systolic Pressure","Diastolic Pressure"];
summary(T)
Variables:

    LastName: 100x1 string

    Age: 100x1 double

        Values:

            Min          25   
            Median       39   
            Max          50   

    Height: 100x1 double

        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Values:

            Min          111  
            Median     142.5  
            Max          202  

    Smoker: 100x1 logical

        Properties:
            Description:  Has the patient ever been a smoker
        Values:

            True        34   
            False       66   

    Systolic: 100x1 double

        Properties:
            Description:  Systolic Pressure
        Values:

            Min         109   
            Median      122   
            Max         138   

    Diastolic: 100x1 double

        Properties:
            Description:  Diastolic Pressure
        Values:

            Min           68  
            Median      81.5  
            Max           99  

変数の単位。文字ベクトルの cell 配列または string 配列として指定します。このプロパティには空の cell 配列を指定できます。これは既定値です。配列が空でない場合、含まれる要素の数は変数の数と同じでなければなりません。単位がない変数について、空の文字ベクトルまたは空の string を個別に指定できます。

  • 変数の単位は、関数 summary を使用すると表示されます。

  • string 配列を使用してこのプロパティを指定した場合、文字ベクトルの cell 配列に変換されて保存されます。

table を作成します。変数の単位を変更します。結果の概要を表示します。

load patients
T = table(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic);
T.LastName = string(T.LastName);
T.Properties.VariableUnits = ["","Yrs","In","Lbs","","mm Hg","mm Hg"];
summary(T)
Variables:

    LastName: 100x1 string

    Age: 100x1 double

        Properties:
            Units:  Yrs
        Values:

            Min          25   
            Median       39   
            Max          50   

    Height: 100x1 double

        Properties:
            Units:  In
        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100x1 double

        Properties:
            Units:  Lbs
        Values:

            Min          111  
            Median     142.5  
            Max          202  

    Smoker: 100x1 logical

        Values:

            True        34   
            False       66   

    Systolic: 100x1 double

        Properties:
            Units:  mm Hg
        Values:

            Min         109   
            Median      122   
            Max         138   

    Diastolic: 100x1 double

        Properties:
            Units:  mm Hg
        Values:

            Min           68  
            Median      81.5  
            Max           99  

連続変数または離散変数としてのステータス。文字ベクトルの cell 配列または string 配列として指定します。

このプロパティは table と timetable のいずれにもありますが、timetable のみで使用されます。詳細については、timetableVariableContinuity プロパティを参照してください。

カスタム メタデータ

table とその変数のカスタマイズされたメタデータ。CustomProperties オブジェクトとして指定します。

CustomProperties オブジェクトは、table への追加が可能なカスタマイズされたメタデータ用のコンテナーです。既定では、CustomProperties にはプロパティが含まれていません。CustomProperties に追加する各プロパティには、table メタデータまたは変数メタデータを含めることができます。プロパティに変数メタデータが含まれる場合、その値は配列でなければならず、その配列内の要素数は table 変数の数と等しくなければなりません。

  • カスタマイズされたメタデータのプロパティを table に追加するには、関数 addprop を使用する。

  • カスタマイズされたメタデータにアクセスするか、変更を加えるには、構文 tableName.Properties.CustomProperties.PropertyName を使用する。この構文で、PropertyName は、addprop を使用してそのプロパティを追加した際に選択した名前です。

  • プロパティを削除するには、関数 rmprop を使用する。

メモ: addproprmprop を使用して追加や削除ができるのは、カスタマイズされたメタデータのプロパティのみです。tableName.Properties オブジェクトのプロパティの追加や削除はできません。

table を作成します。

load patients
T = table(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic);

table とその変数に関するカスタマイズされたメタデータを保持できるプロパティを追加します。この例では、メタデータは計器の名前と、変数がプロットされているかどうかを示す true 値と false 値、および出力ファイルの名前です。プロパティを追加するには、関数 addprop を使用します。

T = addprop(T,["Instrument","ToPlot","OutputFile"],["variable","variable","table"]);
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {'LastName'  'Age'  'Height'  'Weight'  'Smoker'  'Systolic'  'Diastolic'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
              OutputFile: []
              Instrument: []
                  ToPlot: []

ドット構文を使用して、カスタマイズされたメタデータに値を代入します。テキスト値の配列をカスタマイズされたメタデータに割り当てる場合は、文字ベクトルの cell 配列ではなく、string 配列を使用することをお勧めします。CustomProperties のプロパティが文字ベクトルの cell 配列である場合、テキスト以外の値が cell 配列の要素として後から代入されるのを防ぐ手立てがなくなります。

T.Properties.CustomProperties.Instrument = ["","","height rod","scale","","blood pressure cuff","blood pressure cuff"];
T.Properties.CustomProperties.ToPlot = [false false true true false true true];
T.Properties.CustomProperties.OutputFile = 'patientData.csv';
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {'LastName'  'Age'  'Height'  'Weight'  'Smoker'  'Systolic'  'Diastolic'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
              OutputFile: 'patientData.csv'
              Instrument: [""    ""    "height rod"    "scale"    ""    "blood pressure cuff"    "blood pressure cuff"]
                  ToPlot: [0 0 1 1 0 1 1]

OutputFile プロパティを T から削除します。

T = rmprop(T,"OutputFile");
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {'LastName'  'Age'  'Height'  'Weight'  'Smoker'  'Systolic'  'Diastolic'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
              Instrument: [""    ""    "height rod"    "scale"    ""    "blood pressure cuff"    "blood pressure cuff"]
                  ToPlot: [0 0 1 1 0 1 1]

すべて折りたたむ

患者のグループに関するデータを table に保存します。計算を実行し、結果を同じ table に保存することができます。また、table には作業や table の変数について説明する注釈を付けることができます。

最初に、患者データをもつワークスペース変数を作成します。これらの変数には任意のデータ型を設定できますが、行数は同じでなければなりません。

LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

table T をワークスペース変数のコンテナーとして作成します。関数 table はワークスペース変数名を T の table 変数の名前として使用します。table 変数は複数の列をもつことができます。たとえば、T の変数 BloodPressure は 5 行 2 列の配列です。

T = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
T=5×6 table
     LastName      Age    Smoker    Height    Weight    BloodPressure
    ___________    ___    ______    ______    ______    _____________

    {'Sanchez'}    38     true        71       176       124     93  
    {'Johnson'}    43     false       69       163       109     77  
    {'Li'     }    38     true        64       131       125     83  
    {'Diaz'   }    40     false       67       133       117     75  
    {'Brown'  }    49     true        64       119       122     80  

ドット インデックスを使用して table 変数にアクセスできます。たとえば、T.Height の値を使用して、患者の平均身長を計算します。

meanHeight = mean(T.Height)
meanHeight = 67

ボディマス指数 (BMI) を計算し、新しい table 変数として追加します。ドット構文を使用して、table 変数の追加と名前の設定を 1 ステップで行うこともできます。

T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2
T=5×7 table
     LastName      Age    Smoker    Height    Weight    BloodPressure     BMI  
    ___________    ___    ______    ______    ______    _____________    ______

    {'Sanchez'}    38     true        71       176       124     93      24.547
    {'Johnson'}    43     false       69       163       109     77      24.071
    {'Li'     }    38     true        64       131       125     83      22.486
    {'Diaz'   }    40     false       67       133       117     75      20.831
    {'Brown'  }    49     true        64       119       122     80      20.426

table に、BMI 計算の説明として注釈を付けます。T.Properties によりアクセスしたメタデータを使用して、T とその変数に注釈を付けることができます。

T.Properties.Description = 'Patient data, including body mass index (BMI) calculated using Height and Weight';
T.Properties
ans = 
  TableProperties with properties:

             Description: 'Patient data, including body mass index (BMI) calculated using Height and Weight'
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {'LastName'  'Age'  'Smoker'  'Height'  'Weight'  'BloodPressure'  'BMI'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

table の 2 番目の次元名を使用して、table のすべてのデータに行列としてアクセスします。

一連の患者に関する 5 行のデータをもつ table を作成します。

Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

T = table(Age,Smoker,Height,Weight,BloodPressure)
T=5×5 table
    Age    Smoker    Height    Weight    BloodPressure
    ___    ______    ______    ______    _____________

    38     true        71       176       124     93  
    43     false       69       163       109     77  
    38     true        64       131       125     83  
    40     false       67       133       117     75  
    49     true        64       119       122     80  

DimensionNames プロパティを使用して、table の次元名を表示します。2 番目の次元の既定の名前は Variables です。

T.Properties.DimensionNames
ans = 1x2 cell
    {'Row'}    {'Variables'}

構文 T.Variables を使用して、table のデータに行列としてアクセスします。この構文は、中かっこ構文 T{:,:} を使用してすべての内容にアクセスする場合と等価です。table のデータを連結して行列を生成することができない場合は、エラー メッセージが表示されます。

T.Variables
ans = 5×6

    38     1    71   176   124    93
    43     0    69   163   109    77
    38     1    64   131   125    83
    40     0    67   133   117    75
    49     1    64   119   122    80

2 番目の次元の名前を変更します。名前を変更したら、その新しい名前を使用してデータにアクセスすることができます。

T.Properties.DimensionNames{2} = 'PatientData';
T.PatientData
ans = 5×6

    38     1    71   176   124    93
    43     0    69   163   109    77
    38     1    64   131   125    83
    40     0    67   133   117    75
    49     1    64   119   122    80

table のサイズと変数のデータ型を指定して、table に事前割り当てを行います。関数 table は、指定したデータ型に適した既定値を変数に代入します。また、変数の既定の名前も設定されますが、独自の変数名を割り当てることもできます。事前割り当てにより、後から追加するデータの領域が table に用意されます。

sz = [4 3];
varTypes = {'double','datetime','string'};
T = table('Size',sz,'VariableTypes',varTypes)
T=4×3 table
    Var1    Var2      Var3   
    ____    ____    _________

     0      NaT     <missing>
     0      NaT     <missing>
     0      NaT     <missing>
     0      NaT     <missing>

変数の名前を指定するには、名前と値のペアの引数 'VariableNames' を使用します。

varNames = {'Temperature','Time','Station'};
T2 = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames)
T2=4×3 table
    Temperature    Time     Station 
    ___________    ____    _________

         0         NaT     <missing>
         0         NaT     <missing>
         0         NaT     <missing>
         0         NaT     <missing>

データの行を T2 の最初の 2 行に追加します。コードによりデータの行が一度に 1 行または数行追加される場合は、事前割り当てが便利です。行を追加するたびに table を拡張する代わりに、データの領域を既にもっている table 変数への代入を行うことができます。

T2(1,:) = {75,datetime('now'),"S1"};
T2(2,:) = {68,datetime('now')+1,"S2"}
T2=4×3 table
    Temperature            Time             Station 
    ___________    ____________________    _________

        75         29-Aug-2023 22:47:51    "S1"     
        68         30-Aug-2023 22:47:51    "S2"     
         0                          NaT    <missing>
         0                          NaT    <missing>

データ値の行をカプセル化して cell 配列にすることができます。cell 配列から行を割り当てると、cell 配列の要素が table の行に割り当てられます。

配列から table を作成します。table 変数名を指定するには、名前と値のペアの引数 'VariableNames' を使用します。たとえば、'VariableNames' を使用して、他の入力引数がワークスペース変数でない場合に名前を指定することができます。

T = table(categorical({'M';'F';'M'}),[45;32;34],...
          {'NY';'CA';'MA'},logical([1;0;0]),...
          'VariableNames',{'Gender','Age','State','Vote'})
T=3×4 table
    Gender    Age    State     Vote 
    ______    ___    ______    _____

      M       45     {'NY'}    true 
      F       32     {'CA'}    false
      M       34     {'MA'}    false

州名が行名になっている table を作成します。関数 table を使用する際には、'VariableNames''RowNames' の両方の名前と値のペアを使用することができます。

T = table(categorical({'M';'F';'M'}),[45;32;34],logical([1;0;0]),...
          'VariableNames',{'Gender','Age','Vote'},...
          'RowNames',{'NY';'CA';'MA'})
T=3×3 table
          Gender    Age    Vote 
          ______    ___    _____

    NY      M       45     true 
    CA      F       32     false
    MA      M       34     false

table の行名を指定します。table に行名は必須ではありませんが、これを指定すると、行名をインデックスとして table 内を参照することができます。また、table の最初の次元の名前を使用して、一連の行名にアクセスすることもできます。

患者データが格納されている配列を作成します。

LastName = {'Sanchez';'Johnson';'Lee';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];

これらの配列が格納される table を作成します。LastName を table の行名のソースとして指定します。この table には変数が 3 つしかありません。行名は table 変数ではなく、table のプロパティです。

T = table(Age,Weight,Height,'RowNames',LastName)
T=5×3 table
               Age    Weight    Height
               ___    ______    ______

    Sanchez    38      176        71  
    Johnson    43      163        69  
    Lee        38      131        64  
    Diaz       40      133        67  
    Brown      49      119        64  

行には行名が設定されているため、T の行を名前で指定することができます。

T('Lee',:)
ans=1×3 table
           Age    Weight    Height
           ___    ______    ______

    Lee    38      131        64  

複数の行を指定するには cell 配列を使用します。

T({'Lee','Brown'},:)
ans=2×3 table
             Age    Weight    Height
             ___    ______    ______

    Lee      38      131        64  
    Brown    49      119        64  

T のすべての行名に cell 配列としてアクセスするには、構文 T.Row を使用します。既定では、table の最初の次元の名前は Row です。

T.Row
ans = 5x1 cell
    {'Sanchez'}
    {'Johnson'}
    {'Lee'    }
    {'Diaz'   }
    {'Brown'  }

最初の次元の名前を変更します。名前を変更すると、新しい名前を使用して行名にアクセスできるようになります。

T.Properties.DimensionNames{1} = 'LastNames';
T.LastNames
ans = 5x1 cell
    {'Sanchez'}
    {'Johnson'}
    {'Lee'    }
    {'Diaz'   }
    {'Brown'  }

R2017a 以降、二重引用符を使用して string を作成し、string 配列を table 変数に追加できるようになりました。

FlightNum = [1261;547;3489];
Customer = ["Jones";"Brown";"Smith"];
Date = datetime(2016,12,20:22)';
Rating = categorical(["Good";"Poor";"Fair"]);
Comment = ["Flight left on time, not crowded";...
           "Late departure, ran out of dinner options";...
           "Late, but only by half an hour. Otherwise fine."];
T = table(FlightNum,Customer,Date,Rating,Comment)
T=3×5 table
    FlightNum    Customer       Date        Rating                         Comment                     
    _________    ________    ___________    ______    _________________________________________________

      1261       "Jones"     20-Dec-2016     Good     "Flight left on time, not crowded"               
       547       "Brown"     21-Dec-2016     Poor     "Late departure, ran out of dinner options"      
      3489       "Smith"     22-Dec-2016     Fair     "Late, but only by half an hour. Otherwise fine."

string 配列内のテキストを行名として使用するには、string 配列を文字ベクトルの cell 配列に変換します。次に、行名を含む table を作成します。

Customer = cellstr(Customer);
T = table(FlightNum,Date,Rating,Comment,'RowNames',Customer)
T=3×4 table
             FlightNum       Date        Rating                         Comment                     
             _________    ___________    ______    _________________________________________________

    Jones      1261       20-Dec-2016     Good     "Flight left on time, not crowded"               
    Brown       547       21-Dec-2016     Poor     "Late departure, ran out of dinner options"      
    Smith      3489       22-Dec-2016     Fair     "Late, but only by half an hour. Otherwise fine."

さまざまな日付での 3 か所の地域の総降雪量を含むワークスペース変数を作成します。これらの変数は行ベクトルです。

Date = {'12/25/11','1/2/12','1/23/12','2/7/12','2/15/12'};
location1 = [20 5 13 0 17];
location2 = [18 9 21 5 12];
location3 = [26 10 16 3 15];

これらの変数から table を作成する 1 つの方法は、構文 T = table(Date',location1',location2',location3') で関数 table を呼び出すことです。ワークスペース変数は行ベクトルであるため、それらを転置してテーブル内に列方向データとして配置しなければなりません。したがって、入力引数は単純な変数ではなく、式になります。結果として、table は既定の変数名 Var1Var2Var3 および Var4 をもつ T を作成します。T の作成後、T.Properties.VariableNames によりわかりやすい名前を割り当てることができます。ただし、空の table を作成し、変数を新しい名前で 1 つずつ追加する方法が便利な場合もあります。

空の table を作成します。ワークスペース変数を転置して、テーブルに列ベクトルとして追加します。各ワークスペース変数を T に割り当てるときに、table 変数にわかりやすい名前を付けます。

T = table;
T.Date = Date';
T.Natick = location1';
T.Boston = location2';
T.Worcester = location3'
T=5×4 table
        Date        Natick    Boston    Worcester
    ____________    ______    ______    _________

    {'12/25/11'}      20        18         26    
    {'1/2/12'  }       5         9         10    
    {'1/23/12' }      13        21         16    
    {'2/7/12'  }       0         5          3    
    {'2/15/12' }      17        12         15    

R2019b 以降、有効な MATLAB® 識別子でない table 変数名を指定できます。そのような変数名にはスペース、非 ASCII 文字を含めることができ、先頭の文字に任意の文字を使用できます。そのような変数名にアクセスする場合は、変数名を引用符で囲みます。

一連の患者に関するデータを格納する table を作成します。年齢と喫煙状況から始めます。

Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(Age,Smoker)
T=5×2 table
    Age    Smoker
    ___    ______

    38     true  
    43     false 
    38     true  
    40     false 
    49     true  

変数名 '29-May-2019 Blood Pressure Reading' を使用して、血圧測定値を追加します。ドット構文を使用して、変数の追加または変数へのアクセスができます。その名前が有効な MATLAB 識別子ではないため、ドット構文でかっこと引用符を使用します。

T.('29-May-2019 Blood Pressure Reading') = BloodPressure
T=5×3 table
    Age    Smoker    29-May-2019 Blood Pressure Reading
    ___    ______    __________________________________

    38     true                  124     93            
    43     false                 109     77            
    38     true                  125     83            
    40     false                 117     75            
    49     true                  122     80            

table 変数名が有効な MATLAB 識別子である場合、ドット構文をかっこと引用符なしで使用できます。

T.Height = Height;
T.Weight = Weight
T=5×5 table
    Age    Smoker    29-May-2019 Blood Pressure Reading    Height    Weight
    ___    ______    __________________________________    ______    ______

    38     true                  124     93                  71       176  
    43     false                 109     77                  69       163  
    38     true                  125     83                  64       131  
    40     false                 117     75                  67       133  
    49     true                  122     80                  64       119  

変数名を T のインデックスとして使用します。

T(:,{'Age','Smoker','29-May-2019 Blood Pressure Reading'})
ans=5×3 table
    Age    Smoker    29-May-2019 Blood Pressure Reading
    ___    ______    __________________________________

    38     true                  124     93            
    43     false                 109     77            
    38     true                  125     83            
    40     false                 117     75            
    49     true                  122     80            

制限

  • 次の入力名には一重引用符を使用します。

    • 'DimensionNames' "(R2021a 以降)"

    • 'RowNames'

    • 'Size'

    • 'VariableTypes'

    • 'VariableNames'

    変数入力と混同しないように、これらの名前には二重引用符で囲んだ string スカラー ("RowNames" など) を使用しないでください。

ヒント

  • table を受け入れる関数、または返す関数の一覧については、tableを参照してください。

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2013b で導入

すべて展開する