Расчеты на массивах наборов данных

В этом примере показано, как выполнить вычисления на массивах набора данных.

Загрузите выборочные данные.

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

См. также

| | |

Похожие примеры

Подробнее о