Main Content

データセット配列での計算

この例では、データセット配列で計算を行う方法を示します。

標本データを読み込みます。

データをコンマ区切りのテキスト ファイル 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

参考

| | |

関連する例

詳細