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

テーブルでの計算

この例では、table で計算を行う方法を示します。

他の多くの関数では数値配列または同種配列を入力引数として指定する必要がありますが、関数 rowfun および varfun は、それぞれ指定された関数を table に適用します。ドット インデックスを使用して個々の変数からデータを抽出するか、中かっこを使用して 1 つまたは複数の変数からデータを抽出することができます。その後、抽出されたデータを他の関数への入力として使用することができます。

table へのサンプル データの読み込み

関数 readtable を使用して、コンマ区切りのテキスト ファイル testScores.csv から table へデータを読み込みます。testScores.csv には、数人の生徒のテストの得点が含まれています。テキスト ファイルの最初の列にある生徒の名前を、table の行名として使用します。

T = readtable('testScores.csv','ReadRowNames',true)
T=10×4 table
                  Gender      Test1    Test2    Test3
                __________    _____    _____    _____

    HOWARD      {'male'  }     90       87       93  
    WARD        {'male'  }     87       85       83  
    TORRES      {'male'  }     86       85       88  
    PETERSON    {'female'}     75       80       72  
    GRAY        {'female'}     89       86       87  
    RAMIREZ     {'female'}     96       92       98  
    JAMES       {'male'  }     78       75       77  
    WATSON      {'female'}     91       94       92  
    BROOKS      {'female'}     86       83       85  
    KELLY       {'male'  }     79       76       82  

T は、10 行で 4 個の変数を含む table です。

テーブルの集計

関数 summary を使用して、各変数のデータ型、説明、単位およびその他の記述統計を table にまとめます。

summary(T)
Variables:

    Gender: 10x1 cell array of character vectors

    Test1: 10x1 double

        Values:

            Min           75  
            Median      86.5  
            Max           96  

    Test2: 10x1 double

        Values:

            Min          75   
            Median       85   
            Max          94   

    Test3: 10x1 double

        Values:

            Min          72   
            Median       86   
            Max          98   

概要には、各テストの最低点、中央点および最高点が含まれています。

各行の平均の計算

中かっこ {} を使用して 2 番目、3 番目および 4 番目の変数からデータを抽出し、各行の平均を求めて、新しい変数 TestAvg に格納します。

T.TestAvg = mean(T{:,2:end},2)
T=10×5 table
                  Gender      Test1    Test2    Test3    TestAvg
                __________    _____    _____    _____    _______

    HOWARD      {'male'  }     90       87       93          90 
    WARD        {'male'  }     87       85       83          85 
    TORRES      {'male'  }     86       85       88      86.333 
    PETERSON    {'female'}     75       80       72      75.667 
    GRAY        {'female'}     89       86       87      87.333 
    RAMIREZ     {'female'}     96       92       98      95.333 
    JAMES       {'male'  }     78       75       77      76.667 
    WATSON      {'female'}     91       94       92      92.333 
    BROOKS      {'female'}     86       83       85      84.667 
    KELLY       {'male'  }     79       76       82          79 

あるいは、変数名 T{:,{'Test1','Test2','Test3'}} または変数インデックス T{:,2:4} を使用して、データのサブセットを選択することもできます。

グループ化変数を使用した統計の計算

TestAvg の平均値と最大値を、生徒の性別に計算します。

varfun(@mean,T,'InputVariables','TestAvg',...
       'GroupingVariables','Gender')
ans=2×3 table
      Gender      GroupCount    mean_TestAvg
    __________    __________    ____________

    {'female'}        5            87.067   
    {'male'  }        5              83.4   

データ値の置き換え

各テストの最高点は 100 です。中かっこを使用してテーブルからデータを抽出し、テストの点数を 25 ポイントのスケールに変換します。

T{:,2:end} = T{:,2:end}*25/100
T=10×5 table
                  Gender      Test1    Test2    Test3    TestAvg
                __________    _____    _____    _____    _______

    HOWARD      {'male'  }     22.5    21.75    23.25      22.5 
    WARD        {'male'  }    21.75    21.25    20.75     21.25 
    TORRES      {'male'  }     21.5    21.25       22    21.583 
    PETERSON    {'female'}    18.75       20       18    18.917 
    GRAY        {'female'}    22.25     21.5    21.75    21.833 
    RAMIREZ     {'female'}       24       23     24.5    23.833 
    JAMES       {'male'  }     19.5    18.75    19.25    19.167 
    WATSON      {'female'}    22.75     23.5       23    23.083 
    BROOKS      {'female'}     21.5    20.75    21.25    21.167 
    KELLY       {'male'  }    19.75       19     20.5     19.75 

変数名の変更

変数名を TestAvg から Final に変更します。

T.Properties.VariableNames{end} = 'Final'
T=10×5 table
                  Gender      Test1    Test2    Test3    Final 
                __________    _____    _____    _____    ______

    HOWARD      {'male'  }     22.5    21.75    23.25      22.5
    WARD        {'male'  }    21.75    21.25    20.75     21.25
    TORRES      {'male'  }     21.5    21.25       22    21.583
    PETERSON    {'female'}    18.75       20       18    18.917
    GRAY        {'female'}    22.25     21.5    21.75    21.833
    RAMIREZ     {'female'}       24       23     24.5    23.833
    JAMES       {'male'  }     19.5    18.75    19.25    19.167
    WATSON      {'female'}    22.75     23.5       23    23.083
    BROOKS      {'female'}     21.5    20.75    21.25    21.167
    KELLY       {'male'  }    19.75       19     20.5     19.75

参考

| | | | |

関連するトピック