ドキュメンテーション

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

rows2vars

table または timetable の再配向による行の変数への変更

説明

T2 = rows2vars(T1) は、図のように、T1 の行を再配向し、出力 table T2 の変数となるようにします。rows2varsT1 の行の内容を連結できる場合、T2 の対応する変数は配列です。それ以外の場合、T2 の変数は cell 配列です。rows2vars は常に table を返しますが、T1 は table または timetable のいずれかです。

関数 rows2varsT1 の変数の名前を T2 の新しい変数にコピーします。T1 に行の名前または行時間が含まれる場合、その名前または時間が T2 の変数名となります。それ以外の場合、rows2vars は名前 Var1,…,VarNT2 の変数名として生成します。

T2 = rows2vars(T1,'VariableNamesSource',varnames) は、T1 内部の変数を、T2 の変数に与えられた名前のソースとして指定します。varnames は変数名、数値インデックスまたは論理インデックスとして指定できます。

T2 = rows2vars(___,'DataVariables',datavars) は、datavars で指定した T1 の変数を選択し、その変数だけが T2 の行となるように再配向します。T1 の残りの変数は破棄されます。datavars は、1 つ以上の変数名、数値または論理インデックス、または添字オブジェクト (関数 vartype の出力など) にすることができます。この構文では、前述のいずれかの構文の入力引数を使用できます。

前述の構文の名前と値のペアの引数 'VariableNamesSource' を使用して変数を指定する場合、その変数を datavars で指定することはできません。

すべて折りたたむ

table を作成し、その行が新しい table の変数となるように再配向します。

patients.mat ファイルからデータの配列を読み込みます。LastNameGenderAgeHeightWeight の各変数を含む table を作成します。

load patients
T1 = table(LastName,Gender,Age,Height,Weight);
head(T1,3)
ans=3×5 table
     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)
ans=3×4 table
                 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]

timetabe を読み込んで表示します。

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: Variable names were modified to make them valid MATLAB identifiers.
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        

データをスプレッドシートから table に読み取ります。最初の 3 行を表示します。

T1 = readtable('patients.xls');
head(T1,3)
ans=3×10 table
     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 の変数 LastNameT2 の変数の名前のソースになるように指定します。

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 = 9x1 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)
ans=3×9 table
                 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'  

入力引数

すべて折りたたむ

入力 table。table または timetable として指定します。

出力 table 変数の名前のソース。文字ベクトル、string スカラー、整数、または logical 配列として指定します。

  • varnames が文字ベクトルまたは string スカラーである場合、これは入力 table T1 内の変数名です。

  • varnames が整数 n の場合、これは T1 内の n 番目の変数を示します。

  • varnames が logical 配列の場合、n 番目の要素を 1 (true) に指定することで n 番目の変数を示します。他の要素はすべて 0 (false) でなければなりません。

varnames は table 変数を指定する名前、数値、または logical 配列でなければなりませんが、変数自体はどのデータ型でもかまいません。ただし、次の制限があります。

  • 指定した table 変数に含まれる値は、値を string に変換できるデータ型でなければなりません。たとえば、datatime 値は string に変換できるため、varnames は datetime 配列を含む table 変数の名前にすることができます。

  • 指定した table 変数から取得する名前の数は、入力 table の行数と一致しなければなりません。

入力 table の変数。文字ベクトル、文字ベクトルの cell 配列、string 配列、数値配列、logical 配列、または添字オブジェクトとして指定します。

R2018a で導入