table 内のデータへのアクセス - MATLAB & Simulink - MathWorks 日本 (2024)

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

table 内のデータへのアクセス

table は、列方向のデータを変数に格納するコンテナーです。table 変数は、すべての変数の行数が同じであれば、データ型とサイズはそれぞれ異なっていてもかまいません。構造体のフィールドに名前があるのと同様に、table 変数にも名前があります。table の行は名前をもつことができますが、行名は必須ではありません。table データへのアクセスまたは変更を行うには、名前または数値インデックスを使用して、行と変数にインデックスを付けます。

table にインデックスを付ける一般的な理由には以下が含まれます。

  • 行や変数の並べ替えまたは削除。

  • 配列を新しい行または変数として追加。

  • 関数への入力引数として使用するために、データの配列を抽出。

table データへのアクセスまたは変更を行うもう 1 つの方法は、変数エディターでデータを開いてグラフィカルな編集を行うことです。table を開くには、ワークスペース ブラウザーで table をダブルクリックするか、関数 openvar を使用します。

table インデックス構文の概要

使用するインデックスのタイプに応じて、table から抽出されたサブテーブルまたは配列のいずれかにアクセスできます。次を使ってインデックスを付けます。

  • 小かっこ () は選択した行と変数をもつ table を返します。

  • ドット表記は変数の内容を配列として返します。

  • 中かっこ {} は選択した行と変数の内容を連結した配列を返します。

行と変数は、名前、数値インデックス、またはデータ型によって指定できます。

  • "R2019b 以降"、変数名と行名には、スペースや非 ASCII 文字など任意の文字を含めることができます。また、英字だけでなく任意の文字で始めることができます。変数名と行名は、有効な MATLAB® 識別子 (関数 isvarname で判定) である必要はありません。

  • "R2022a 以降"、行および変数を名前で指定する場合は、pattern オブジェクトを使用して名前を指定できます。たとえば、"Var" + digitsPatternVar で始まり、任意の桁数で終わるすべての名前と一致します。

出力のタイプ

構文

変数

指定した行と変数を含む table

T(rows,vars)

指定値:

  • 行番号 (1m)

  • m 個の要素を持つ logical 配列

  • 名前 (T に行名がある場合)

  • 時間 (T が timetable の場合)

  • コロン (:) (すべての行を意味)

指定値:

  • 変数番号 (1n)

  • n 個の要素を持つ logical 配列

  • 名前

  • コロン (:) (すべての変数を意味)

  • T(1:5,[1 4 5])

    T の最初の 5 行と、1 番目、4 番目、5 番目の変数をもつ table

  • T(1:5,[true false false true true])

    T の最初の 5 行と、1 番目、4 番目、5 番目の変数をもつ table

  • T(:,["A","B"])

    すべての行と、A および B という名前の変数をもつ table

  • T(:,"A" + wildcardPattern)

    すべての行と、A で始まる名前の変数をもつ table

指定したデータ型をもつ変数を含む table

S = vartype(type);

T(rows,S)

指定値:

  • 行番号 (1m)

  • m 個の要素を持つ logical 配列

  • 名前 (T に行名がある場合)

  • 時間 (T が timetable の場合)

  • コロン (:) (すべての行を意味)

"numeric""categorical""datetime" などのデータ型として指定

  • S = vartype("numeric");

    T(1:5,S)

    T の最初の 5 行と数値変数をもつ table

1 つの変数からデータを抽出する配列

T.var

T.(expression)

指定なし

指定値:

  • 変数名 (引用符なし)

  • かっこで囲まれた、変数名または数値を返す式

  • T.Date

    Date という名前の table 変数から抽出された配列

  • T.("2019/06/30")

    2019/06/30 という名前の table 変数から抽出された配列

  • T.(1)

    最初の table 変数から抽出された配列

1 つの変数と指定した行からデータを抽出する配列

T.var(rows)

T.(expression)(rows)

配列の数値インデックスまたは論理インデックスとして指定

指定値:

  • 変数名 (引用符なし)

  • かっこで囲まれた、変数名または数値を返す式

  • T.Date(1:5)

    Date という名前の table 変数から抽出された配列の最初の 5 行

  • T.("2019/06/30")(1:5)

    2019/06/30 という名前の table 変数から抽出された配列の最初の 5 行

  • T.(1)(1:5)

    最初の table 変数から抽出された配列の最初の 5 行

指定した行と変数からのデータを連結した配列

T{rows,vars}

指定値:

  • 行番号 (1m)

  • m 個の要素を持つ logical 配列

  • 名前 (T に行名がある場合)

  • 時間 (T が timetable の場合)

  • コロン (:) (すべての行を意味)

指定値:

  • 変数番号 (1n)

  • n 個の要素を持つ logical 配列

  • 名前

  • コロン (:) (すべての変数を意味)

  • T{1:5,[1 4 5]}

    T の最初の 5 行と 1 番目、4 番目、5 番目の変数を連結した配列

  • T{1:5,[true false false true true]}

    T の最初の 5 行と 1 番目、4 番目、5 番目の変数を連結した配列

  • T{:,["A","B"]}

    すべての行と、A および B という名前の変数を連結した配列

  • T{:,"A" + wildcardPattern}

    すべての行と、A で始まる名前の変数を連結した配列

指定した行と、指定したデータ型をもつ変数からのデータを連結した配列

S = vartype(type);

T{rows,S}

指定値:

  • 行番号 (1m)

  • m 個の要素を持つ logical 配列

  • 名前 (T に行名がある場合)

  • 時間 (T が timetable の場合)

  • コロン (:) (すべての行を意味)

"numeric""categorical""datetime" などのデータ型として指定

  • S = vartype("numeric");

    T{1:5,S}

    T の最初の 5 行と数値変数を連結した配列

すべての行と変数からのデータを連結した配列

T.Variables

指定なし

指定なし

  • T.Variables

    T{:,:} で返される配列と同一

指定した行と変数による table へのインデックス付け

ライブ スクリプトを開く

100 人の患者のサンプル データを patients MAT ファイルからワークスペース変数に読み込みます。

load patientswhos
 Name Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 11412 cell Height 100x1 800 double LastName 100x1 11616 cell Location 100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double 

table を作成し、それに AgeHeightWeightSmokerSelfAssessedHealthStatus の各ワークスペース変数を入力します。LastName の一意の識別子を行名として使用します。T は 100 行と 5 つの変数をもつ 100 行 5 列の table です。(行名のベクトルを指定する場合、それは table 変数としてカウントされません)。また、SelfAssessedHealthStatus には一意の値 ExcellentGoodFairPoor のみが含まれるため、categorical 変数に変換します。変数にカテゴリとみなすことができる固定した値のセットがある場合、変数を categorical 配列として扱うと便利です。

SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus);T = table(Age,Height,Weight,Smoker,SelfAssessedHealthStatus,... 'RowNames',LastName)
T=100×5 table Age Height Weight Smoker SelfAssessedHealthStatus ___ ______ ______ ______ ________________________ Smith 38 71 176 true Excellent Johnson 43 69 163 false Fair Williams 38 64 131 false Good Jones 40 67 133 false Fair Brown 49 64 119 false Good Davis 46 68 142 false Good Miller 33 64 142 true Good Wilson 40 68 180 false Good Moore 28 68 183 false Excellent Taylor 31 66 132 false Excellent Anderson 45 68 128 false Excellent Thomas 42 66 137 false Poor Jackson 25 71 174 false Poor White 39 72 202 true Excellent Harris 36 65 129 false Good Martin 48 71 181 true Good ⋮

数値インデックスまたは end キーワードを使用したインデックス付け

T の最初の 5 行とすべての変数を含むサブテーブルを作成します。必要な行と変数を指定するには、小かっこで囲んだ数値インデックスを使用します。このタイプのインデックスは、数値配列へのインデックスと似ています。

firstRows = T(1:5,:)
firstRows=5×5 table Age Height Weight Smoker SelfAssessedHealthStatus ___ ______ ______ ______ ________________________ Smith 38 71 176 true Excellent Johnson 43 69 163 false Fair Williams 38 64 131 false Good Jones 40 67 133 false Fair Brown 49 64 119 false Good 

最後の行または変数を意味する end キーワードも使用できます。end キーワードを使用して table の最後の 5 行にインデックスを付けます。

lastRows = T(end-4:end,:)
lastRows=5×5 table Age Height Weight Smoker SelfAssessedHealthStatus ___ ______ ______ ______ ________________________ Alexander 25 69 171 true Good Russell 44 69 188 true Good Griffin 49 70 186 false Fair Diaz 45 68 172 true Good Hayes 48 66 177 false Fair 

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

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

姓が GriffinDiaz、および Hayes である患者に関するすべてのデータを選択します。T には患者の姓を示す行名があるため、行名を使用して T にインデックスを付けます。

rowsByName = T(["Griffin","Diaz","Hayes"],:)
rowsByName=3×5 table Age Height Weight Smoker SelfAssessedHealthStatus ___ ______ ______ ______ ________________________ Griffin 49 70 186 false Fair Diaz 45 68 172 true Good Hayes 48 66 177 false Fair 

変数を名前で選択することもできます。T の最初の 5 行と、変数 Height および Weight のみをもつ table を作成します。これを表示します。

variablesByName = T(1:5,["Height","Weight"])
variablesByName=5×2 table Height Weight ______ ______ Smith 71 176 Johnson 69 163 Williams 64 131 Jones 67 133 Brown 64 119 

table 変数の名前は、有効な MATLAB® 識別子である必要はありません。スペースや非 ASCII 文字を含めることができ、任意の文字で開始できます。

たとえば、関数 renamevars を使用して変数 SelfAssessedHealthStatus の名前を変更します。スペースとダッシュを追加して、その変数名を読みやすくします。次に、変数名を使用して T にインデックスを付けます。

T = renamevars(T,"SelfAssessedHealthStatus","Self-Assessed Health Status");T(1:5,["Age","Smoker","Self-Assessed Health Status"])
ans=5×3 table Age Smoker Self-Assessed Health Status ___ ______ ___________________________ Smith 38 true Excellent Johnson 43 false Fair Williams 38 false Good Jones 40 false Fair Brown 49 false Good 

パターンを使用した行名または関数名の指定

table 行または変数名を指定する場合、テキストを照合するためのルールを定義する "パターン" を使用できます。たとえば、"Var" で始まり、任意の桁数が続く変数名を照合できます。patternオブジェクト、string、演算子を使用して "パターン表現" を作成できます。

たとえば、行名で T にインデックス付けし、患者の姓が文字 G で始まるすべての行を検索します。G の後に続く任意の文字を照合するには、関数wildcardPatternを使用します。

beginsWithG = "G" + wildcardPattern
beginsWithG = pattern Matching: "G" + wildcardPattern
T(beginsWithG,:)
ans=6×5 table Age Height Weight Smoker Self-Assessed Health Status ___ ______ ______ ______ ___________________________ Garcia 27 69 131 true Fair Green 44 71 193 false Good Gonzalez 35 66 118 false Fair Gray 31 64 130 false Excellent Gonzales 48 71 174 false Good Griffin 49 70 186 false Fair 

変数名で T にインデックス付けし、名前の一部に Status が含まれる任意の名前を検索します。

containsStatus = wildcardPattern + "Status" + wildcardPattern;T(1:5,containsStatus)
ans=5×1 table Self-Assessed Health Status ___________________________ Smith Excellent Johnson Fair Williams Good Jones Fair Brown Good 

変数のデータ型によるインデックス付け

名前や数値を使用して変数を指定する代わりに、同じデータ型をもつすべての変数で一致するデータ型添字を作成することができます。

まず、関数 vartype を使用して数値の table 変数に対応するデータ型添字を作成します。

subscriptObject = vartype("numeric")
subscriptObject = table vartype subscript:Select table variables matching the type 'numeric'

T からの数値変数のみをもつ table を作成します。変数 Smoker は logical 変数であり、Self-Assessed Health Statuscategorical 変数であるため、これらは除外されます。

onlyNumericVariables = T(:,subscriptObject)
onlyNumericVariables=100×3 table Age Height Weight ___ ______ ______ Smith 38 71 176 Johnson 43 69 163 Williams 38 64 131 Jones 40 67 133 Brown 49 64 119 Davis 46 68 142 Miller 33 64 142 Wilson 40 68 180 Moore 28 68 183 Taylor 31 66 132 Anderson 45 68 128 Thomas 42 66 137 Jackson 25 71 174 White 39 72 202 Harris 36 65 129 Martin 48 71 181 ⋮

値が論理条件を満たす行の検索

ライブ スクリプトを開く

patients MAT ファイルのデータから、別の小さい table を作成します。

load patients.matT = table(Age,Height,Weight,Smoker);

値が論理条件を満たす table の行を検索するには、論理インデックス付けを使用します。まず、ドット表記を使用して table 変数にアクセスします。次に、変数の値が指定した条件を満たす論理インデックスの配列を作成できます。論理インデックスを使用して table にインデックスを付けます。

ドット表記を使用した table 変数からのデータ抽出

table 変数からデータを抽出するには、ドット表記を使用します。

たとえば、table 変数 Weight から数値のヒストグラムをプロットします。ドット表記を使用して、T.Weight を数値配列として処理できます。T.Weight は、100 行を含む倍精度の列ベクトルです。

histogram(T.Weight)title("Patient Weights")

table 内のデータへのアクセス- MATLAB & Simulink- MathWorks 日本 (1)

論理条件を満たす行へのインデックス付け

論理インデックスの配列を使用して、配列や table にインデックスを付けることができます。通常は、table 変数のどの値が論理条件を満たすかを判定する論理式を使用します。式の結果は、論理インデックスの配列になります。

たとえば、年齢が 40 歳未満の患者に対応する論理インデックスを作成します。

rows = T.Age < 40
rows = 100x1 logical array 1 0 1 0 0 0 1 0 1 1 ⋮

年齢が 40 歳未満の患者の身長を抽出するには、rows を使用して変数 Height にインデックスを付けます。40 歳未満の患者は 56 人います。

T.Height(rows)
ans = 56×1 71 64 64 68 66 71 72 65 69 69 ⋮

論理インデックスを使用して table にインデックスを付けることができます。40 歳未満の患者について T の行を表示します。

T(rows,:)
ans=56×4 table Age Height Weight Smoker ___ ______ ______ ______ 38 71 176 true 38 64 131 false 33 64 142 true 28 68 183 false 31 66 132 false 25 71 174 false 39 72 202 true 36 65 129 false 32 69 191 true 27 69 131 true 37 70 179 false 39 64 117 false 28 65 123 true 25 70 189 false 39 63 143 false 25 63 114 false ⋮

1 つの論理式を使って複数の条件と照合することができます。40 歳未満の喫煙患者の行を表示します。

rows = (T.Smoker==true & T.Age<40);T(rows,:)
ans=18×4 table Age Height Weight Smoker ___ ______ ______ ______ 38 71 176 true 33 64 142 true 39 72 202 true 32 69 191 true 27 69 131 true 28 65 123 true 30 67 186 true 33 66 180 true 39 71 164 true 37 70 194 true 33 67 115 true 31 72 178 true 28 69 189 true 39 68 182 true 37 65 120 true 31 66 141 true ⋮

任意の変数名や式を使用したドット表記

ライブ スクリプトを開く

ドット表記を使用してインデックスを付ける場合、変数の指定方法が 2 つあります。

  • 引用符なしの名前で指定。たとえば、T.Date"Date" という名前の変数を指定します。

  • ドットの後の小かっこで囲まれた式で指定。たとえば、T.("Start Date")"Start Date" という名前の変数を指定します。

table 変数名が有効な MATLAB® 識別子でもある場合は、最初の構文を使用します (有効な識別子は英字で始まり、英字、数字、アンダースコアのみを含みます)。

以下を指定する場合は、2 つ目の構文を使用します。

  • table 内の変数の位置を示す数値。

  • 有効な MATLAB 識別子ではない変数名。

  • table 内の変数の名前を出力としてもつ関数、または table に追加された変数。関数の出力は文字ベクトルまたは string スカラーでなければなりません。

たとえば、patients MAT ファイルから table を作成します。次に、ドット表記を使用して table 変数の内容にアクセスします。

load patientsT = table(Age,Height,Weight,Smoker);

table 内の位置によって変数を指定するには、数値を使用します。AgeT の最初の変数であるため、その位置を指定するには数値 1 を使用します。

T.(1)
ans = 100×1 38 43 38 40 49 46 33 40 28 31 ⋮

変数を名前で指定するには、ドットの後に指定するか、引用符と小かっこで名前を囲みます。Age は有効な識別子であるため、T.Age または T.("Age") を使用して指定できます。

T.Age
ans = 100×1 38 43 38 40 49 46 33 40 28 31 ⋮

有効な MATLAB 識別子でない table 変数名も指定できます。変数名にはスペースや非 ASCII 文字を含めることができ、任意の文字で開始できます。ただし、こうした名前の table 変数にドット表記を使用してアクセスする場合は、引用符と小かっこを使用して名前を指定しなければなりません。

たとえば、スペースとハイフンを含む変数名を T に追加します。

SelfAssessedHealthStatus = categorical(SelfAssessedHealthStatus);T = addvars(T,SelfAssessedHealthStatus,'NewVariableNames',"Self-Assessed Health Status");T(1:5,:)
ans=5×5 table Age Height Weight Smoker Self-Assessed Health Status ___ ______ ______ ______ ___________________________ 38 71 176 true Excellent 43 69 163 false Fair 38 64 131 false Good 40 67 133 false Fair 49 64 119 false Good 

ドット表記を使用して新しい table 変数にアクセスします。最初の 5 つの要素を表示します。

healthStatus = T.("Self-Assessed Health Status");healthStatus(1:5)
ans = 5x1 categorical Excellent Fair Good Fair Good 

また、関数の出力を変数名として使用することもできます。変数 T.("Self-Assessed Health Status") を削除します。そのうえで、現在の日付が名前に含まれる変数に置き換えます。

T.("Self-Assessed Health Status") = [];T.(string(datetime("today")) + " Self Report") = SelfAssessedHealthStatus;T(1:5,:)
ans=5×5 table Age Height Weight Smoker 03-Aug-2023 Self Report ___ ______ ______ ______ _______________________ 38 71 176 true Excellent 43 69 163 false Fair 38 64 131 false Good 40 67 133 false Fair 49 64 119 false Good 

指定した行と変数からのデータの抽出

ライブ スクリプトを開く

中かっこを使用したインデックスではデータが table から抽出され、その結果はサブテーブルでは "なく" 配列になります。しかし、その違いを除けば、小かっこを使用したインデックスの場合と同様に、数値、名前、データ型の添字を使用して行と変数を指定できます。table から値を抽出するには、中かっこを使用します。複数の table 変数から値を抽出する場合、各変数のデータ型は連結可能でなければなりません。

行と変数の指定

patients ファイルの数値配列と logical 配列から table を作成します。

load patientsT = table(Age,Height,Weight,Smoker,... 'RowNames',LastName);

T の複数の変数からデータを抽出します。ドット表記とは異なり、中かっこによるインデックス付けでは複数の table 変数から値を抽出し、連結して 1 つの配列にすることができます。

最初の 5 名の患者の身長と体重を抽出します。数値インデックスを使用して最初の 5 行を選択し、変数名を使用して変数 HeightWeight を選択します。

A = T{1:5,["Height","Weight"]}
A = 5×2 71 176 69 163 64 131 67 133 64 119

A は 5 行 2 列の数値配列で、table ではありません。

変数名を 1 つ指定した場合、中かっこによるインデックス付けの結果は、ドット表記で得られる配列と同じになります。ただし、中かっこのインデックスを使用する場合は、行と変数の両方を指定しなければなりません。たとえば、構文 T.Height と構文 T{:,"Height"} は同じ配列を返します。

すべての行と変数からのデータの抽出

すべての table 変数のデータ型が互いに連結可能であれば、T.Variables 構文を使用してすべての table データを 1 つの配列に入れることができます。この構文は T{:,:} と等価です。ここで、コロンはすべての行とすべての変数を示します。table に行名が含まれる場合、それらは T.Variables の出力には含まれません。行名は table 変数に保存されません。行名は、table を記述するメタデータの一部です。

A2 = T.Variables
A2 = 100×4 38 71 176 1 43 69 163 0 38 64 131 0 40 67 133 0 49 64 119 0 46 68 142 0 33 64 142 1 40 68 180 0 28 68 183 0 31 66 132 0 ⋮

参考

table | histogram | addvars | vartype | renamevars

関連するトピック

  • table を使用する利点
  • table の作成とその table へのデータの代入
  • table 変数の名前変更と説明
  • table に数値データと非数値データの両方が含まれている場合の計算
  • table でのデータの整理と計算
  • table と timetable でのグループ化された計算
  • 条件を満たす配列要素の検索

MATLAB コマンド

次の MATLAB コマンドに対応するリンクがクリックされました。

 

コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。

table 内のデータへのアクセス- MATLAB & Simulink- MathWorks 日本 (2)

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:

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
    • Deutsch
    • English
    • Français
  • United Kingdom (English)

Asia Pacific

  • Australia (English)
  • India (English)
  • New Zealand (English)
  • 中国
  • 日本 (日本語)
  • 한국 (한국어)

Contact your local office

table 内のデータへのアクセス
- MATLAB & Simulink
- MathWorks 日本 (2024)
Top Articles
Latest Posts
Article information

Author: Ms. Lucile Johns

Last Updated:

Views: 5860

Rating: 4 / 5 (61 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Ms. Lucile Johns

Birthday: 1999-11-16

Address: Suite 237 56046 Walsh Coves, West Enid, VT 46557

Phone: +59115435987187

Job: Education Supervisor

Hobby: Genealogy, Stone skipping, Skydiving, Nordic skating, Couponing, Coloring, Gardening

Introduction: My name is Ms. Lucile Johns, I am a successful, friendly, friendly, homely, adventurous, handsome, delightful person who loves writing and wants to share my knowledge and understanding with you.