このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
テーブルでの計算
この例では、table で計算を行う方法を示します。
他の多くの関数では数値配列または同種配列を入力引数として指定する必要がありますが、関数 rowfun
および varfun
は、それぞれ指定された関数を table に適用します。ドット インデックスを使用して個々の変数からデータを抽出するか、中かっこを使用して 1 つまたは複数の変数からデータを抽出することができます。その後、抽出されたデータを他の関数への入力として使用することができます。R2018a 以降、関数 groupsummary
を使用し、table 内のデータ グループに対して計算を実行することもできます。
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
を使用して平均値を計算します。
varfun(@mean,T,'InputVariables','TestAvg',... 'GroupingVariables','Gender')
ans=2×3 table
Gender GroupCount mean_TestAvg
__________ __________ ____________
{'female'} 5 87.067
{'male' } 5 83.4
R2018a 以降、関数 groupsummary
を使用し、table 内のデータ グループに対して計算を実行することもできます。groupsummary
を使用して各学生グループの TestAvg
の最大値を計算します。
groupsummary(T,'Gender','max','TestAvg')
ans=2×3 table
Gender GroupCount max_TestAvg
__________ __________ ___________
{'female'} 5 95.333
{'male' } 5 90
データ値の置き換え
各テストの最高点は 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
参考
table
| summary
| rowfun
| varfun
| findgroups
| splitapply
| groupsummary