В этом примере показано, как выполнить вычисления на массивах набора данных.
Импортируйте данные из текстового файла, разделенного запятыми 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