Этот пример показывает, как выполнить вычисления на таблицах.
Функции rowfun
и varfun
, каждый применяет заданную функцию к таблице, все же много других функций, требуют числовых или гомогенных массивов как входных параметров. Можно извлечь данные из отдельных переменных, использующих точечную индексацию или из одной или нескольких переменных с помощью фигурных скобок. Извлеченные данные являются затем массивом, который можно использовать в качестве входа к другим функциям.
Считайте данные из разделенного от запятой текстового файла, 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(@mean,T,'InputVariables','TestAvg',... 'GroupingVariables','Gender')
ans=2×3 table
Gender GroupCount mean_TestAvg
________ __________ ____________
'female' 5 87.067
'male' 5 83.4
Максимальный счет к каждому тесту равняется 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
findgroups
| rowfun
| splitapply
| summary
| table
| varfun