Расчеты по таблицам

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

Функции rowfun и varfun каждый из них применяет заданную функцию к таблице, однако многие другие функции требуют в качестве входных параметров числовых или однородных массивов. Можно извлечь данные из отдельных переменных с помощью индексации точек или из одной или нескольких переменных с помощью фигурных скобок. Извлеченные данные являются массивом, который можно использовать как вход в другие функции. Начиная с R2018a, вы также можете использовать groupsummary функция для вычислений по группам данных в таблице.

Чтение выборочных данных в таблицу

Считывайте данные из текстового файла, разделенного запятыми, testScores.csv, в таблицу с использованием readtable функция. testScores.csv содержит тестовые счета для нескольких студентов. Используйте имена студентов в первом столбце текстового файла как имена строк в таблице.

T = readtable('testScores.csv','ReadRowNames',true)
T=10×4 table
                  Gender      Test1    Test2    Test3
                __________    _____    _____    _____

    HOWARD      {'male'  }     90       87       93  
    WARD        {'male'  }     87       85       83  
    TORRES      {'male'  }     86       85       88  
    PETERSON    {'female'}     75       80       72  
    GRAY        {'female'}     89       86       87  
    RAMIREZ     {'female'}     96       92       98  
    JAMES       {'male'  }     78       75       77  
    WATSON      {'female'}     91       94       92  
    BROOKS      {'female'}     86       83       85  
    KELLY       {'male'  }     79       76       82  

T - таблица с 10 строками и четырьмя переменными.

Результирующие таблицы

Просмотрите тип данных, описание, модули и другую описательную статистику для каждой переменной при помощи summary функция для подведения итогов по таблице.

summary(T)
Variables:

    Gender: 10x1 cell array of character vectors

    Test1: 10x1 double

        Values:

            Min           75  
            Median      86.5  
            Max           96  

    Test2: 10x1 double

        Values:

            Min          75   
            Median       85   
            Max          94   

    Test3: 10x1 double

        Values:

            Min          72   
            Median       86   
            Max          98   

Сводные данные содержат минимальный, медианный и максимальный счет для каждого теста.

Поиск среднего значения по каждой строке

Извлеките данные из второй, третьей и четвертой переменных с помощью фигурных скобок, {}, найти среднее значение каждой строки и сохранить его в новой переменной, TestAvg.

T.TestAvg = mean(T{:,2:end},2)
T=10×5 table
                  Gender      Test1    Test2    Test3    TestAvg
                __________    _____    _____    _____    _______

    HOWARD      {'male'  }     90       87       93          90 
    WARD        {'male'  }     87       85       83          85 
    TORRES      {'male'  }     86       85       88      86.333 
    PETERSON    {'female'}     75       80       72      75.667 
    GRAY        {'female'}     89       86       87      87.333 
    RAMIREZ     {'female'}     96       92       98      95.333 
    JAMES       {'male'  }     78       75       77      76.667 
    WATSON      {'female'}     91       94       92      92.333 
    BROOKS      {'female'}     86       83       85      84.667 
    KELLY       {'male'  }     79       76       82          79 

Кроме того, можно использовать имена переменных, T{:,{'Test1','Test2','Test3'}} или индексы переменных, T{:,2:4} для выбора подмножества данных.

Вычисление статистики с помощью сгруппированной переменной

Вычислите среднее и максимальное TestAvg по полу студентов. Во-первых, вычислите средства с помощью varfun функция.

varfun(@mean,T,'InputVariables','TestAvg',...
       'GroupingVariables','Gender')
ans=2×3 table
      Gender      GroupCount    mean_TestAvg
    __________    __________    ____________

    {'female'}        5            87.067   
    {'male'  }        5              83.4   

Начиная с R2018a, вы также можете использовать groupsummary функция для выполнения расчетов на группах данных в таблице. Вычислите максимальные значения TestAvg для каждой группы студентов, использующих groupsummary.

groupsummary(T,'Gender','max','TestAvg')
ans=2×3 table
      Gender      GroupCount    max_TestAvg
    __________    __________    ___________

    {'female'}        5           95.333   
    {'male'  }        5               90   

Замена значений данных

Максимальный счет для каждого теста - 100. Используйте фигурные скобки, чтобы извлечь данные из таблицы и преобразовать тестовые счета в масштаб 25 точек.

T{:,2:end} = T{:,2:end}*25/100
T=10×5 table
                  Gender      Test1    Test2    Test3    TestAvg
                __________    _____    _____    _____    _______

    HOWARD      {'male'  }     22.5    21.75    23.25      22.5 
    WARD        {'male'  }    21.75    21.25    20.75     21.25 
    TORRES      {'male'  }     21.5    21.25       22    21.583 
    PETERSON    {'female'}    18.75       20       18    18.917 
    GRAY        {'female'}    22.25     21.5    21.75    21.833 
    RAMIREZ     {'female'}       24       23     24.5    23.833 
    JAMES       {'male'  }     19.5    18.75    19.25    19.167 
    WATSON      {'female'}    22.75     23.5       23    23.083 
    BROOKS      {'female'}     21.5    20.75    21.25    21.167 
    KELLY       {'male'  }    19.75       19     20.5     19.75 

Изменение имени переменной

Измените имя переменной на TestAvg на Final.

T.Properties.VariableNames{end} = 'Final'
T=10×5 table
                  Gender      Test1    Test2    Test3    Final 
                __________    _____    _____    _____    ______

    HOWARD      {'male'  }     22.5    21.75    23.25      22.5
    WARD        {'male'  }    21.75    21.25    20.75     21.25
    TORRES      {'male'  }     21.5    21.25       22    21.583
    PETERSON    {'female'}    18.75       20       18    18.917
    GRAY        {'female'}    22.25     21.5    21.75    21.833
    RAMIREZ     {'female'}       24       23     24.5    23.833
    JAMES       {'male'  }     19.5    18.75    19.25    19.167
    WATSON      {'female'}    22.75     23.5       23    23.083
    BROOKS      {'female'}     21.5    20.75    21.25    21.167
    KELLY       {'male'  }    19.75       19     20.5     19.75

См. также

| | | | | |

Похожие темы