В этом примере показано, как выполнить вычисления на массивах набора данных.
Импортируйте данные из разделенного от запятой текстового файла testScores.csv
.
ds = dataset('File','testScores.csv','Delimiter',',')
ds = LastName Sex Test1 Test2 Test3 Test4 'HOWARD' 'male' 90 87 93 92 'WARD' 'male' 87 85 83 90 'TORRES' 'male' 86 85 88 86 'PETERSON' 'female' 75 80 72 77 'GRAY' 'female' 89 86 87 90 'RAMIREZ' 'female' 96 92 98 95 'JAMES' 'male' 78 75 77 77 'WATSON' 'female' 91 94 92 90 'BROOKS' 'female' 86 83 85 89 'KELLY' 'male' 79 76 82 80
Существует 4 экзаменационных отметки для каждого из 10 студентов в широком формате.
Вычислите среднюю (среднюю) экзаменационную отметку для каждого студента в массиве набора данных и сохраните его в новой переменной, TestAvg
. Экзаменационные отметки находятся в столбцах 3 - 6.
Используйте double
преобразовывать заданные переменные типа массив набора данных в числовой массив. Затем вычислите среднее значение через второе измерение (через столбцы), чтобы получить тестовое среднее значение для каждого студента.
ds.TestAvg = mean(double(ds(:,3:6)),2); ds(:,{'LastName','TestAvg'})
ans = LastName TestAvg 'HOWARD' 90.5 'WARD' 86.25 'TORRES' 86.25 'PETERSON' 76 'GRAY' 88 'RAMIREZ' 95.25 'JAMES' 76.75 'WATSON' 91.75 'BROOKS' 85.75 'KELLY' 79.25
Вычислите средние и максимальные средние экзаменационные отметки для каждого пола.
stats = grpstats(ds,'Sex',{'mean','max'},'DataVars','TestAvg')
stats = Sex GroupCount mean_TestAvg max_TestAvg male 'male' 5 83.8 90.5 female 'female' 5 87.35 95.25
Это возвращает новый массив набора данных, содержащий заданную итоговую статистику для каждого уровня сгруппированной переменной, Sex
.
Знаменатель для каждой экзаменационной отметки равняется 100. Преобразуйте знаменатель экзаменационной отметки в 25.
scores = double(ds(:,3:6)); newScores = scores*25/100; ds = replacedata(ds,newScores,3:6)
ds = LastName Sex Test1 Test2 Test3 Test4 TestAvg 'HOWARD' 'male' 22.5 21.75 23.25 23 90.5 'WARD' 'male' 21.75 21.25 20.75 22.5 86.25 'TORRES' 'male' 21.5 21.25 22 21.5 86.25 'PETERSON' 'female' 18.75 20 18 19.25 76 'GRAY' 'female' 22.25 21.5 21.75 22.5 88 'RAMIREZ' 'female' 24 23 24.5 23.75 95.25 'JAMES' 'male' 19.5 18.75 19.25 19.25 76.75 'WATSON' 'female' 22.75 23.5 23 22.5 91.75 'BROOKS' 'female' 21.5 20.75 21.25 22.25 85.75 'KELLY' 'male' 19.75 19 20.5 20 79.25
Первые две линии кода извлекают тестовые данные и выполняют желаемое вычисление. Затем replacedata
вставляет новые экзаменационные отметки назад в массив набора данных.
Переменная средних значений экзаменационной отметки, TestAvg
, теперь итоговый счет для каждого студента.
Поменяйте имя переменной на Final
.
ds.Properties.VarNames{end} = 'Final';
ds
ds = LastName Sex Test1 Test2 Test3 Test4 Final 'HOWARD' 'male' 22.5 21.75 23.25 23 90.5 'WARD' 'male' 21.75 21.25 20.75 22.5 86.25 'TORRES' 'male' 21.5 21.25 22 21.5 86.25 'PETERSON' 'female' 18.75 20 18 19.25 76 'GRAY' 'female' 22.25 21.5 21.75 22.5 88 'RAMIREZ' 'female' 24 23 24.5 23.75 95.25 'JAMES' 'male' 19.5 18.75 19.25 19.25 76.75 'WATSON' 'female' 22.75 23.5 23 22.5 91.75 'BROOKS' 'female' 21.5 20.75 21.25 22.25 85.75 'KELLY' 'male' 19.75 19 20.5 20 79.25
dataset
| double
| grpstats
| replacedata