データセット配列での計算
この例では、データセット配列で計算を行う方法を示します。
標本データを読み込みます。
データをコンマ区切りのテキスト ファイル testScores.csv
からインポートします。
ds = dataset('File','testScores.csv','Delimiter',',')
ds = LastName School Test1 Test2 Test3 {'Jeong' } {'XYZ School'} 90 87 93 {'Collins' } {'XYZ School'} 87 85 83 {'Torres' } {'XYZ School'} 86 85 88 {'Phillips'} {'ABC School'} 75 80 72 {'Ling' } {'ABC School'} 89 86 87 {'Ramirez' } {'ABC School'} 96 92 98 {'Lee' } {'XYZ School'} 78 75 77 {'Walker' } {'ABC School'} 91 94 92 {'Garcia' } {'ABC School'} 86 83 85 {'Chang' } {'XYZ School'} 79 76 82
ここでは、10 名の生徒のそれぞれについて、3 回のテストの得点が幅形式で出力されています。
データセット配列変数の平均を計算します。
データセット配列に格納されている各生徒のテストの得点の平均値を計算し、新しい変数 TestAvg
に格納します。テストの得点は 3 ~ 5 列目に格納されています。
double
を使用して、指定したデータセット配列変数を数値配列に変換します。その後、2 番目の次元 (列) 全体での平均値を計算し、各生徒のテストの平均点を算出します。
ds.TestAvg = mean(double(ds(:,3:5)),2); ds(:,{'LastName','TestAvg'})
ans = LastName TestAvg {'Jeong' } 90 {'Collins' } 85 {'Torres' } 86.333 {'Phillips'} 75.667 {'Ling' } 87.333 {'Ramirez' } 95.333 {'Lee' } 76.667 {'Walker' } 92.333 {'Garcia' } 84.667 {'Chang' } 79
グループ化変数を使用してデータセット配列を要約します。
学校ごとに、テストの平均点の平均値と最大値を計算します。
stats = grpstats(ds,'School',{'mean','max'},'DataVars','TestAvg')
stats = School GroupCount mean_TestAvg max_TestAvg XYZ School {'XYZ School'} 5 83.4 90 ABC School {'ABC School'} 5 87.067 95.333
これにより、グループ化変数 School
の各レベルに対して指定された要約統計量が格納された新しいデータセット配列が返されます。
データ値を置き換えます。
各テストの得点の分母は 100 です。このテストの得点の分母を 25 に変換します。
scores = double(ds(:,3:)); newScores = scores*25/100; ds = replacedata(ds,newScores,3:5)
ds = LastName School Test1 Test2 Test3 TestAvg {'Jeong' } {'XYZ School'} 22.5 21.75 23.25 90 {'Collins' } {'XYZ School'} 21.75 21.25 20.75 85 {'Torres' } {'XYZ School'} 21.5 21.25 22 86.333 {'Phillips'} {'ABC School'} 18.75 20 18 75.667 {'Ling' } {'ABC School'} 22.25 21.5 21.75 87.333 {'Ramirez' } {'ABC School'} 24 23 24.5 95.333 {'Lee' } {'XYZ School'} 19.5 18.75 19.25 76.667 {'Walker' } {'ABC School'} 22.75 23.5 23 92.333 {'Garcia' } {'ABC School'} 21.5 20.75 21.25 84.667 {'Chang' } {'XYZ School'} 19.75 19 20.5 79
コードの最初の 2 行により、テストのデータが抽出され、目的の計算が実行されます。その後、replacedata
で新しいテストの得点をデータセット配列に戻します。
テストの平均点を示す変数 TestAvg
は、各生徒の最終得点となります。
変数名を変更します。
変数名を Final
に変更します。
ds.Properties.VarNames{end} = 'Final';
ds
ds = LastName School Test1 Test2 Test3 Final {'Jeong' } {'XYZ School'} 22.5 21.75 23.25 90 {'Collins' } {'XYZ School'} 21.75 21.25 20.75 85 {'Torres' } {'XYZ School'} 21.5 21.25 22 86.333 {'Phillips'} {'ABC School'} 18.75 20 18 75.667 {'Ling' } {'ABC School'} 22.25 21.5 21.75 87.333 {'Ramirez' } {'ABC School'} 24 23 24.5 95.333 {'Lee' } {'XYZ School'} 19.5 18.75 19.25 76.667 {'Walker' } {'ABC School'} 22.75 23.5 23 92.333 {'Garcia' } {'ABC School'} 21.5 20.75 21.25 84.667 {'Chang' } {'XYZ School'} 19.75 19 20.5 79
参考
dataset
| double
| replacedata
| grpstats