このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
table
異なる型を含むことができる名前付き変数をもつ table 配列
説明
配列 table
は、テキスト ファイルやスプレッドシートの列など、列方向データや表形式データを格納します。table は、"変数" にそれぞれの列方向データを格納します。table 変数は、すべての変数の行数が同じであれば、データ型とサイズはそれぞれ異なっていてもかまいません。構造体のフィールドに名前があるのと同様に、table 変数にも名前があります。関数 summary
を使用して、table に関する情報を取得します。
table の内容をインデックスで参照するには、次の構文のいずれかを使用します。詳細については、table 内のデータへのアクセスを参照してください。
ドット表記。
T.
の形式で、1 つの変数を抽出します。varname
中かっこ。
T{
の形式で、指定した行と変数から配列を抽出します。rows
,vars
}かっこ。
T(
の形式で、table を返します。rows
,vars
)
数学演算 (+
、.*
、mean
など) は table で直接実行できます。詳細については、table および timetable での直接計算を参照してください。 (R2023a 以降)
データにタイムスタンプが含まれている場合は、代わりにtimetable
の使用を検討してください。
作成
ファイルからデータを table に読み取るには、関数 Import Tool
または関数 readtable
を使用できます。あるいは、以下に説明する関数 table
を使用して、入力データ配列から table を作成します。
また、後で値を入力する変数用にスペースを許容する table を作成することもできます。変数用にスペースが事前に割り当てられた table を作成するには、後述のとおり、関数 table
で 'Size'
を最初の入力引数として指定します。
構文
説明
T = table(
は、入力変数 var1,...,varN
)var1,...,varN
から table を作成します。変数にはさまざまなサイズとデータ型を使用できます。ただし、すべての変数の行数が同じでなければなりません。
入力がワークスペース変数の場合、table
はそれらの名前を出力 table の変数名として割り当てます。それ以外の場合、table
は 'Var1',...,'Var
の形式の変数名を割り当てます。ここで、N
'
は変数の数です。N
T = table(___,
は、名前と値のペアの引数を 1 つ以上使用して追加の入力引数を指定します。たとえば、名前と値のペア Name,Value
)'VariableNames'
を使用して変数名を指定することができます。この構文では、前述の構文の入力引数のいずれかを使用できます。
T = table
は、0 行 0 列の空の table を作成します。
入力引数
var1,...,varN
— 入力変数
配列
入力変数。同じ数の行をもつ配列として指定します。入力変数には、さまざまなサイズとデータ型を使用できます。
一般的な入力変数は、数値配列、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 を作成します。
sz
— 事前に割り当てられる table のサイズ
2 要素の数値ベクトル
事前に割り当てられる 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 つを指定します。
varTypes
— 事前に割り当てられた変数のデータ型
文字ベクトルの cell 配列 | string 配列
事前に割り当てられた変数のデータ型。文字ベクトルの cell 配列または string 配列として指定します。varTypes
で指定する型の数は、sz
の 2 番目の要素で指定する変数の数と等しくなければなりません。
varTypes
には、次の表に示す名前を含む、任意のデータ型の名前を格納できます。
データ型名 | 各要素の初期値 |
---|---|
| 倍精度または単精度の |
| 倍精度または単精度の |
| 符号付き 8、16、32、64 ビットの整数 |
| 符号なし 8、16、32、64 ビットの整数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| フィールドをもたないスカラー構造体 |
| 変数をもたない table |
| 変数をもたず、行時間に |
他すべてのデータ型で、初期値は、配列の未代入の要素を "埋める" ためにその型またはクラスで使用される値となります。
データ型として '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 を作成します。
VariableNames
— 変数名
文字ベクトルの cell 配列 | string 配列
変数名。要素が空ではない一意の文字ベクトルの cell 配列または string 配列として指定します。
配列内の名前の数は、table 変数の数と等しくなければなりません。
関数
table
も、table のVariableNames
プロパティに変数名を保存します。変数名には、スペースや非 ASCII 文字を含め、どんな Unicode® 文字でも使用することができます。
例: T = table(lat,lon,'VariableNames',["Latitude","Longitude"])
は、入力配列 lat
および lon
から table を作成し、対応する table 変数の名前を Latitude
および Longitude
に設定します。
RowNames
— 行名
文字ベクトルの cell 配列 | string 配列
行名。要素が空ではない一意の文字ベクトルの cell 配列または string 配列として指定します。
配列内の名前の数は、行数と等しくなければなりません。
関数
table
も、table のRowNames
プロパティに行名を保存します。行名には、空白や非 ASCII 文字を含む任意の Unicode 文字を使用できます。
関数
table
は、行名から先頭または末尾の空白文字をすべて削除します。
例: T = table(Age,Height,Weight,'RowNames',LastName)
は、変数 LastName
で指定された行名をもつ table を作成します。
DimensionNames
— 次元名
文字ベクトルの 2 要素 cell 配列 | 2 要素 string 配列
"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 T
に Var1
という名前の変数がある場合、構文 T.Var1
を使用してこの変数の値にアクセスできます。
table メタデータ
DimensionNames
— 次元名
{'Row','Variables'}
(既定値) | 文字ベクトルの 2 要素 cell 配列 | 2 要素 string 配列
次元名。文字ベクトルの 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.
RowNames
— 行名
{}
(既定値) | 文字ベクトルの cell 配列 | string 配列
行名。要素が空ではない一意の文字ベクトルの 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"
Description
— table の説明
''
(既定値) | 文字ベクトル | string スカラー
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
UserData
— 追加の table 情報
[]
(既定値) | 配列
追加の 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.
変数のメタデータ
VariableNames
— 変数名
文字ベクトルの cell 配列 | string 配列
変数名。要素が空ではない一意の文字ベクトルの 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
VariableDescriptions
— 変数の説明
{}
(既定値) | 文字ベクトルの cell 配列 | string 配列
変数の説明。文字ベクトルの 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
VariableUnits
— 変数の単位
{}
(既定値) | 文字ベクトルの cell 配列 | string 配列
変数の単位。文字ベクトルの 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
VariableContinuity
— 連続変数または離散変数としてのステータス
[]
(既定値) | 文字ベクトルの cell 配列 | string 配列
連続変数または離散変数としてのステータス。文字ベクトルの cell 配列または string 配列として指定します。
このプロパティは table と timetable のいずれにもありますが、timetable のみで使用されます。詳細については、timetable
の VariableContinuity
プロパティを参照してください。
カスタム メタデータ
CustomProperties
— table とその変数のカスタマイズされたメタデータ
CustomProperties
オブジェクト
table とその変数のカスタマイズされたメタデータ。CustomProperties
オブジェクトとして指定します。
CustomProperties
オブジェクトは、table への追加が可能なカスタマイズされたメタデータ用のコンテナーです。既定では、CustomProperties
にはプロパティが含まれていません。CustomProperties
に追加する各プロパティには、table メタデータまたは変数メタデータを含めることができます。プロパティに変数メタデータが含まれる場合、その値は配列でなければならず、その配列内の要素数は table 変数の数と等しくなければなりません。
メモ: addprop
と rmprop
を使用して追加や削除ができるのは、カスタマイズされたメタデータのプロパティのみです。
オブジェクトのプロパティの追加や削除はできません。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 には作業や 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 データに行列としてアクセス
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 07-Mar-2024 15:45:00 "S1"
68 08-Mar-2024 15:45:00 "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' }
string 配列を使用して table 変数と行名を指定
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."
変数を個別に割り当てて table を作成
さまざまな日付での 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
は既定の変数名 Var1
、Var2
、Var3
および 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を参照してください。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を制限付きでサポートしています。
構文
TT = table(T1,T2,...)
は、いくつかの tall 配列(T1,T2,...)
から tall table を作成します。'VariableNames'
の名前と値のペアの引数を使用して、変数名を指定できます。
詳細については、メモリに収まらないデータの tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
R2019b 以降、コード生成を目的とした MATLAB コードで table を使用できます。詳細については、table のコード生成 (MATLAB Coder)とコード生成における table の制限事項 (MATLAB Coder)を参照してください。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
入力配列は分散され、行数が同じでなければならない。
結果は、最初の次元に沿って 1 次元分散スキームを使用して分散される。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2013b で導入R2023a: データを抽出することなく、table および timetable で直接計算を実行
データを抽出することなく、table および timetable で直接計算を実行できるようになりました。table および timetable 内のすべての変数のデータ型で計算がサポートされている必要があります。オペランドの一方が table または timetable で、他方が数値または logical 配列である演算を実行することもできます。以前は、すべての計算で、table および timetable へのインデックス付けを行ってそれらからデータを抽出する必要がありました。
詳細については、table および timetable での直接計算とRules for Table and Timetable Mathematicsを参照してください。
R2022a: ドット表記や複数レベルのインデックス付けでの添字付けにおけるパフォーマンス向上
R2022a では、ドット表記を使用した添字付けが R2021b よりも大幅に速くなっています。また、複数レベルのインデックス付けでの添字付けも高速化しています。
たとえば、ドット表記を使用して 106 個の要素をもつ table 変数を参照する場合、R2022a でのパフォーマンスは R2021b よりも 4 倍以上速くなります。
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = 1:10000; tic; % Refer to variable using dot notation for i = indices x = t.Var1; end toc end
おおよその実行時間は以下のとおりです。
R2021b: 0.15 秒
R2022a: 0.035 秒
同様に、ドット表記を使用して 106 個の要素をもつ table 変数に配列を代入する場合、R2022a でのパフォーマンスは R2021b の約 3.6 倍速くなります。
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = 1:10000; x = randi(1e6,1e6,1); tic; % Assign to variable using dot notation for i = indices t.Var1 = x; end toc end
おおよその実行時間は以下のとおりです。
R2021b: 0.23 秒
R2022a: 0.063 秒
また、ドット表記と小かっこを使用して table 変数の要素に個々の値を割り当てる場合、R2022a でのパフォーマンスは R2021b よりも 4 倍以上速くなります。
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = randi(1e6,1,10000); tic; % Assign to elements using dot notation and parentheses for i = indices t.Var1(i) = rand; end toc end
おおよその実行時間は以下のとおりです。
R2021b: 0.53 秒
R2022a: 0.12 秒
このコードの時間測定では、Windows® 10、Intel® Xeon CPU W-2133 (3.60 GHz) 搭載のテスト システムで、関数 timingTest
の各バージョンを呼び出しました。
R2021b: 中かっこを使用した添字付けによる要素の代入でパフォーマンスが向上
R2021b では、中かっこを使用した添字付けによる代入が R2021a よりも大幅に速くなっています。
たとえば、106 個の要素をもつ 3 つの table 変数に代入する場合、以下に示すように、R2021b でのパフォーマンスは約 4.4 倍速くなります。
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = randi(1e6,1,10000); tic; % Assign row vector of random values to randomly chosen row for i = indices t{i,:} = rand(1,3); end toc end
おおよその実行時間は以下のとおりです。
R2021a: 7.4 秒
R2021b: 1.7 秒
このコードの時間測定では、Intel Xeon W-2133 CPU (3.6 GHz) 搭載の Windows 10 システムで、R2021a および R2021b の関数 timingTest
を呼び出しました。
R2021a: 次元名は予約名と同じではならない
MATLAB では、予約名である 'Properties'
、'RowNames'
、'VariableNames'
、または ':'
のいずれかと一致する次元名を割り当てるとエラーが発生します。以前のリリースの MATLAB では、警告が表示され、予約名と異なる名前に次元名が変更されていました。
R2020a: table 変数への添字付けによる要素の代入でパフォーマンスが向上
添字付けによる table 変数への代入が大幅に速くなっています。パフォーマンスは本質的に、各 table 変数の要素数に対して一定です。
たとえば、ドット インデックスを使用して 106 個の要素をもつ変数に要素を代入する場合、以下に示すように、R2020a でのパフォーマンスは R2019b の約 2 倍速くなります。
function timingTest() t = table(zeros(1e6,1)); indices = randi(1e6,1,10000); tic; for i = indices t.Var1(i) = rand; end toc end
おおよその実行時間は以下のとおりです。
R2019b: 1.20 秒
R2020a: 0.59 秒
同様に、中かっこを使用する代入も速くなっています。106 個の要素をもつ 3 つの table 変数に代入する場合、以下に示すように、R2020a でのパフォーマンスは R2019b の約 1.2 倍速くなります。
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = randi(1e6,1,10000); tic; for i = indices t{i,:} = rand; end toc end
おおよその実行時間は以下のとおりです。
R2019b: 8.04 秒
R2020a: 6.68 秒
このコードの時間測定では、Windows 10、Intel Xeon® W-2133 (3.60 GHz) 搭載のテスト システムで、関数 timingTest
を呼び出しました。
関数内で添字付けによる table への代入を行う場合にのみ、パフォーマンスが向上します。コマンド ラインから、または try-catch
ブロック内で table に添字付けを行う場合には向上しません。
R2019b: 変数名の先頭と末尾には空白文字を含めることが可能
先頭または末尾に空白文字を含む table および timetable の変数名は変更されません。
以前のリリースでは、名前と値のペアの引数 'VariableNames'
を使用して指定した場合や、VariableNames
プロパティに割り当てた場合、変数名から先頭と末尾の空白文字が削除されていました。
そのような文字を手動で削除するには、まず名前に関数 strtrim
を使用してから、変数名として table または timetable に割り当てます。
R2019b: 変数名と次元名は一意でなければならない
MATLAB では、次元名と一致する table 変数名、または変数名と一致する次元名を割り当てた場合にエラーが発生します。以前のリリースでは、MATLAB は警告を表示し、一意となるように名前を変更していました。
R2019b: 大規模な table 変数への添字付けによる要素の代入でパフォーマンスが向上
大規模な table 変数への添字付けによる代入が大幅に速くなっています。現在のパフォーマンスは本質的に、各 table 変数の要素数に対して一定です。
たとえば、ドット インデックスを使用して 106 個の要素をもつ変数に要素を代入する場合、以下に示すように、R2019b でのパフォーマンスは約 40 倍速くなります。
function timingTest() t = table(zeros(1e6,1)); indices = randi(1e6,1,10000); tic; for i = indices t.Var1(i) = rand; end toc end
おおよその実行時間は以下のとおりです。
R2019a: 47.83 秒
R2019b: 1.20 秒
同様に、中かっこを使用する代入も速くなっています。たとえば、106 個の要素をもつ 3 つの table 変数に代入する場合、R2019b でのパフォーマンスは約 18 倍速くなります。
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = randi(1e6,1,10000); tic; for i = indices t{i,:} = rand; end toc end
おおよその実行時間は以下のとおりです。
R2019a: 156.39 秒
R2019b: 8.51 秒
このコードの時間測定では、Intel Xeon W-2133 CPU (3.6 GHz) 搭載の Windows 10 システムで、各バージョンの関数 timingTest
を呼び出しました。
table 変数が大きくなるほど、パフォーマンスがより大きく向上します。ただし、パフォーマンスが向上するのは、関数内で添字付けによる table への代入を行う場合のみです。コマンド ラインから、または try-catch ブロック内で table に添字付けを行う場合には向上しません。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)