Вычисления на таблицах

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

Функции 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

Смотрите также

| | | | | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте