rows2vars
table または timetable の再配向による行の変数への変更
説明
T2 = rows2vars(
は、T1
)T1
の行を再配向し、出力 table T2
の変数となるようにします。rows2vars
が T1
の行の内容を連結できる場合、T2
の対応する変数は配列です。それ以外の場合、T2
の変数は cell 配列です。関数 rows2vars
は T1
の変数の名前を T2
の新しい変数にコピーします。出力は常に table ですが、T1
は table または timetable のいずれかです。
たとえば、T1
に 2 つの行と 5 つの変数がある場合、T2
には T1
の元のデータを格納する 5 つの行と 2 つの変数に加え、OriginalVariableNames
という名前の新しい変数が含まれます。T2
の変数 OriginalVariableNames
には、T1
の table 変数の名前が格納されます。
T1
に行の名前または行時間が含まれる場合、その名前または時間が T2
の変数名となります。それ以外の場合、rows2vars
は名前 Var1,…,VarN
を T2
の変数名として生成します。
概念上、T2
は T1
の転置なようなものと考えることができます。厳密に言うと、T2
には rows2vars
によって新しい変数が追加されるため、T2
は入力 table の真の転置ではありません。また、T1
の "転置" された行が T2
で cell 配列になる場合、T1
の変数に互換性がないデータ型が含まれることがあります。
T2 = rows2vars(
は、名前と値のペアの引数を 1 つ以上使用して追加の引数を指定します。たとえば、名前と値のペアの引数 T1
,Name,Value
)'VariableNamesSource'
を使用して、T2
の変数名のソースを指定できます。
例
行を変数として再配向
table を作成し、その行が新しい table の変数となるように再配向します。
patients.mat
ファイルからデータの配列を読み込みます。LastName
、Gender
、Age
、Height
、Weight
の各変数を含む table を作成します。
load patients
T1 = table(LastName,Gender,Age,Height,Weight);
head(T1,3)
LastName Gender Age Height Weight ____________ __________ ___ ______ ______ {'Smith' } {'Male' } 38 71 176 {'Johnson' } {'Male' } 43 69 163 {'Williams'} {'Female'} 38 64 131
T1 の行が出力 table の変数となるように再配向します。
T2 = rows2vars(T1);
T2
の最初の 4 つの変数を表示します。T2
の最初の変数には T1
の変数の名前が含まれます。T2
の残りの変数は T1
の行に対応します。T1
には行ラベルがなかったため、T2
の変数には既定の名前として Var1
から VarN
(N
は変数の数) までの名前が設定されます。
T2(:,1:4)
ans=5×4 table
OriginalVariableNames Var1 Var2 Var3
_____________________ _________ ___________ ____________
{'LastName'} {'Smith'} {'Johnson'} {'Williams'}
{'Gender' } {'Male' } {'Male' } {'Female' }
{'Age' } {[ 38]} {[ 43]} {[ 38]}
{'Height' } {[ 71]} {[ 69]} {[ 64]}
{'Weight' } {[ 176]} {[ 163]} {[ 131]}
行名を含む table を作成します。table に行名がある場合、rows2vars
は行名を変数名に変換します。
T3 = table(Gender,Age,Height,Weight,'RowNames',LastName);
head(T3,3)
Gender Age Height Weight __________ ___ ______ ______ Smith {'Male' } 38 71 176 Johnson {'Male' } 43 69 163 Williams {'Female'} 38 64 131
T3
の行を再配向します。
T4 = rows2vars(T3); T4(:,1:4)
ans=4×4 table
OriginalVariableNames Smith Johnson Williams
_____________________ ________ ________ __________
{'Gender'} {'Male'} {'Male'} {'Female'}
{'Age' } {[ 38]} {[ 43]} {[ 38]}
{'Height'} {[ 71]} {[ 69]} {[ 64]}
{'Weight'} {[ 176]} {[ 163]} {[ 131]}
timetable の行を再配向
timetable を読み込んで表示します。
load bostonTT
Boston
Boston=6×3 timetable
Time Temp WindSpeed Rain
___________________ ____ _________ ____
2016-06-09 06:03:00 59.5 0.1 0.05
2016-06-09 12:00:23 63 2.3 0.08
2016-06-09 18:02:57 61.7 3.1 0.13
2016-06-10 06:01:47 55.4 5.7 0.15
2016-06-10 12:06:00 62.3 2.6 0.87
2016-06-10 18:02:57 58.8 6.2 0.33
その行が出力の変数となるように再配向します。関数 rows2vars
は、行時間を名前に変換しますが、有効な変数名となるように変更します。また rows2vars
によって返される出力引数は常に table となります。これは入力引数が timetable の場合でも同様です。
T = rows2vars(Boston)
Warning: Table variable names that were not valid MATLAB identifiers have been modified. Since table variable names must be unique, any table variable names that happened to match the new identifiers also have been modified. To use the original row names as new variable names, set 'VariableNamingRule' to 'preserve'.
T=3×7 table
OriginalVariableNames x2016_06_0906_03_00 x2016_06_0912_00_23 x2016_06_0918_02_57 x2016_06_1006_01_47 x2016_06_1012_06_00 x2016_06_1018_02_57
_____________________ ___________________ ___________________ ___________________ ___________________ ___________________ ___________________
{'Temp' } 59.5 63 61.7 55.4 62.3 58.8
{'WindSpeed'} 0.1 2.3 3.1 5.7 2.6 6.2
{'Rain' } 0.05 0.08 0.13 0.15 0.87 0.33
元の名前の保持
R2020a 以降、入力 table または timetable から名前を取得し、それらを変更せずに出力 table 内の変数名として使用できます。元の名前を保持するには、名前と値のペアの引数 'VariableNamingRule'
を使用します。
timetable を読み込んで表示します。
load bostonTT
Boston
Boston=6×3 timetable
Time Temp WindSpeed Rain
___________________ ____ _________ ____
2016-06-09 06:03:00 59.5 0.1 0.05
2016-06-09 12:00:23 63 2.3 0.08
2016-06-09 18:02:57 61.7 3.1 0.13
2016-06-10 06:01:47 55.4 5.7 0.15
2016-06-10 12:06:00 62.3 2.6 0.87
2016-06-10 18:02:57 58.8 6.2 0.33
timetable を再配向して、その行時間が出力 table 内の変数名となるようにします。datetime
値を string に変換し、名前と値のペア 'VariableNamingRule'
を使用して結果の名前を保持します。
T = rows2vars(Boston,'VariableNamingRule','preserve')
T=3×7 table
OriginalVariableNames 2016-06-09 06:03:00 2016-06-09 12:00:23 2016-06-09 18:02:57 2016-06-10 06:01:47 2016-06-10 12:06:00 2016-06-10 18:02:57
_____________________ ___________________ ___________________ ___________________ ___________________ ___________________ ___________________
{'Temp' } 59.5 63 61.7 55.4 62.3 58.8
{'WindSpeed'} 0.1 2.3 3.1 5.7 2.6 6.2
{'Rain' } 0.05 0.08 0.13 0.15 0.87 0.33
日付は数値で始まるため、T
内の変数名は有効な MATLAB® 識別子ではありません。ただし、そのような変数を参照するために、かっこを使用して、ドット表記を使用できます。
T.('2016-06-09 06:03:00')
ans = 3×1
59.5000
0.1000
0.0500
出力 table 変数の名前
データをスプレッドシートから table に読み取ります。最初の 3 行を表示します。
T1 = readtable('patients.xls');
head(T1,3)
LastName Gender Age Location Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus ____________ __________ ___ _____________________________ ______ ______ ______ ________ _________ ________________________ {'Smith' } {'Male' } 38 {'County General Hospital' } 71 176 true 124 93 {'Excellent'} {'Johnson' } {'Male' } 43 {'VA Hospital' } 69 163 false 109 77 {'Fair' } {'Williams'} {'Female'} 38 {'St. Mary's Medical Center'} 64 131 false 125 83 {'Good' }
T1
の行を再配向し、新しい table T2
の変数にします。T1
の変数 LastName
が T2
の変数の名前のソースになるように指定します。
T2 = rows2vars(T1,'VariableNamesSource','LastName');
T2
の最初の 4 つの変数を表示します。T2
の最初の変数には T1
の変数の名前が含まれます。T2
の残りの変数は T1
の行に対応します。
T2(:,1:4)
ans=9×4 table
OriginalVariableNames Smith Johnson Williams
____________________________ ___________________________ _______________ _____________________________
{'Gender' } {'Male' } {'Male' } {'Female' }
{'Age' } {[ 38]} {[ 43]} {[ 38]}
{'Location' } {'County General Hospital'} {'VA Hospital'} {'St. Mary's Medical Center'}
{'Height' } {[ 71]} {[ 69]} {[ 64]}
{'Weight' } {[ 176]} {[ 163]} {[ 131]}
{'Smoker' } {[ 1]} {[ 0]} {[ 0]}
{'Systolic' } {[ 124]} {[ 109]} {[ 125]}
{'Diastolic' } {[ 93]} {[ 77]} {[ 83]}
{'SelfAssessedHealthStatus'} {'Excellent' } {'Fair' } {'Good' }
T2.Smith
内のデータを表示します。この例では、T2
のすべての変数が 9 行 1 列の cell 配列です。これは T1
の行の値を連結して配列にすることができないためです。
T2.Smith
ans=9×1 cell array
{'Male' }
{[ 38]}
{'County General Hospital'}
{[ 71]}
{[ 176]}
{[ 1]}
{[ 124]}
{[ 93]}
{'Excellent' }
データ変数の指定
データをスプレッドシートから table に読み取ります。スプレッドシートの最初の列を table の行名として使用します。最初の 3 行を表示します。
T1 = readtable('patients.xls','ReadRowNames',true); head(T1,3)
Gender Age Location Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus __________ ___ _____________________________ ______ ______ ______ ________ _________ ________________________ Smith {'Male' } 38 {'County General Hospital' } 71 176 true 124 93 {'Excellent'} Johnson {'Male' } 43 {'VA Hospital' } 69 163 false 109 77 {'Fair' } Williams {'Female'} 38 {'St. Mary's Medical Center'} 64 131 false 125 83 {'Good' }
T1
で指定した変数を再配向して、残りを破棄します。データ変数を名前で指定するには、文字ベクトルの cell 配列を使用します。
T2 = rows2vars(T1,'DataVariables',{'Gender','Age','Height','Weight'}); T2(:,1:4)
ans=4×4 table
OriginalVariableNames Smith Johnson Williams
_____________________ ________ ________ __________
{'Gender'} {'Male'} {'Male'} {'Female'}
{'Age' } {[ 38]} {[ 43]} {[ 38]}
{'Height'} {[ 71]} {[ 69]} {[ 64]}
{'Weight'} {[ 176]} {[ 163]} {[ 131]}
また、入力 table 内の位置でデータ変数を指定することもできます。変数の位置を指定するには、数値配列を使用します。
T3 = rows2vars(T1,'DataVariables',[1 2 6:9]);
T3(:,1:4)
ans=6×4 table
OriginalVariableNames Smith Johnson Williams
____________________________ _____________ ________ __________
{'Gender' } {'Male' } {'Male'} {'Female'}
{'Age' } {[ 38]} {[ 43]} {[ 38]}
{'Smoker' } {[ 1]} {[ 0]} {[ 0]}
{'Systolic' } {[ 124]} {[ 109]} {[ 125]}
{'Diastolic' } {[ 93]} {[ 77]} {[ 83]}
{'SelfAssessedHealthStatus'} {'Excellent'} {'Fair'} {'Good' }
入力引数
T1
— 入力テーブル
table | timetable
入力 table。table または timetable として指定します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: 'VariableNamingRule','preserve'
は、T1
から取得した元の名前を有効な MATLAB® 識別子となるように変更せずに保持します。
VariableNamesSource
— 変数名を含む T1
内の変数
文字ベクトル | string スカラー | 正の整数 | logical ベクトル
変数名を含む T1
内の変数。'VariableNamesSource'
と文字ベクトル、string スカラー、正の整数または logical ベクトルで構成されるコンマ区切りのペアとして指定します。関数 rows2vars
は、表に示すように 'VariableNamesSource'
の値を解釈します。
| 意味 |
---|---|
文字ベクトルまたは string スカラー | 入力 table |
整数 | T1 内の n 番目の変数。 |
長さが |
|
'VariableNamesSource'
の値は table 変数を指定する名前、数値、または logical 配列でなければなりませんが、変数自体はどのデータ型でもかまいません。ただし、次の制限があります。
指定した table 変数に含まれる値は、値を string に変換できるデータ型でなければなりません。たとえば、
datetime
値は string に変換できるため、'VariableNamesSource'
の値はdatetime
配列を含む table 変数の名前にすることができます。指定した table 変数から取得する名前の数は、入力 table の行数と一致しなければなりません。
DataVariables
— 選択された T1
の変数
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列 | pattern
スカラー | 正の整数 | 正の整数のベクトル | logical ベクトル | 添字オブジェクト
選択された T1
の変数。'DataVariables'
と、string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern
スカラー、正の整数、正の整数のベクトル、logical ベクトル、または添字オブジェクトで構成されるコンマ区切りのペアとして指定します。rows2vars
は、'DataVariables'
の値で指定した変数を選択し、その変数だけが T2
の行となるように再配向します。T1
の残りの変数は破棄されます。
VariableNamingRule
— T2
内の変数の命名規則
'modify'
(既定値) | 'preserve'
T2
内の変数の命名規則。'VariableNamingRule'
と、値 'modify'
または値 'preserve'
で構成されるコンマ区切りのペアとして指定します。
'VariableNamingRule'
の値は、出力 table または timetable 内の変数について、次の命名規則を指定します。
| 規則 |
---|---|
| 出力内の対応する変数名が有効な MATLAB 識別子となるように、入力 table または timetable から取得された名前を変更します。 |
| 入力 table または timetable から取得された元の名前を保持します。出力内の対応する変数名には、空白や非 ASCII 文字を含む任意の Unicode® 文字を使用できます。 メモ: 場合によっては、
|
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
timetable はサポートされていません。
入力 table を可変サイズにすることはできません。
名前と値の引数
'VariableNamesSource'
はサポートされていません。名前と値の引数
'DataVariables'
の値は定数でなければなりません。名前と値の引数
'DataVariables'
の値はパターン式をサポートしません。名前と値の引数
'VariableNamingRule'
の値は定数でなければなりません。入力 table に行名を割り当てる場合、行名のベクトルは定数でなければなりません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
バージョン履歴
R2018a で導入
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)