Этот пример показывает, как получить зарплату и данные о травме из STATS.com для отдельных бейсболистов. Чтобы сравнить зарплаты проигрывателей с и без травм, визуализируйте данные в графике рассеивания.
Этот пример требует ключа API STATS.com и секретного кода передачи для бейсбольных данных. Для получения дополнительной информации о ваших учетных данных для доступа к данным, свяжитесь с STATS.com.
Чтобы получить доступ к коду для этого примера, введите edit MLBSalaryVsInjuryExample.m
.
Создайте связь STATS.com sBaseball
для извлечения статистических бейсбольных данных для спортивной лиги под названием 'mlb'
. Настройте связь, чтобы получить данные о зарплате путем определения параметра запроса 'Resource'
как 'salaries'
.
sBaseball = statsllc('gkfrq6fxabcehmn2yctrc6j5','qYR5abCQgc', ... 'DataType','stats','LeagueAbbreviation','mlb', ... 'Resource','salaries','SportName','baseball', ... 'VersionNumber','v1');
Получите отдельные зарплаты бейсболиста data
с помощью sBaseball
.
data = fetch(sBaseball);
Чтобы получить отдельные данные бейсболиста playerData
, получите доступ к вложенной структуре data
. Создайте таблицу данных зарплаты salaryData
путем получения полей структуры в playerData
.
playerData = [data.apiResults.league.season.salaries.player]; salaryData = table((1:data.recordCount)',[playerData.playerId]', ... {playerData.firstName}',{playerData.lastName}', ... [data.apiResults.league.season.salaries.salary]', ... false(data.recordCount,1), ... 'VariableNames',{'Record','PlayerId','FirstName', ... 'LastName','Salary','Injured'});
salaryData
содержит эти имена столбцов:
Запись
Номер записи
PlayerId
— Идентификатор бейсболиста
FirstName
— Имя бейсболиста
LastName
— Фамилия бейсболиста
Salary
— Зарплата бейсболиста
Injured
— Бейсболист ранил состояние
Раненное состояние бейсболиста является заполнителем для данных о травме.
Чтобы получить данные о травме, измените параметр запроса значение Resource
от 'salaries'
до 'participants'
в связи STATS.com sBaseball
. Получите отдельные данные бейсболиста с помощью sBaseball
.
pause(2)
sBaseball.Resource = 'participants';
data = fetch(sBaseball);
Цикл через получившуюся вложенную структуру data
для каждого проигрывателя. Установите травмированное состояние в salaryData
для тех проигрывателей, которые ранены.
numPlayers = data.recordCount; for i = 1:numPlayers playerId = data.apiResults.league.players{i}.playerId; salaryData.Injured(salaryData.PlayerId == playerId) ... = data.apiResults.league.players{i}.isInjured; end
Создайте график рассеивания зарплаты для каждого бейсболиста.
sInjured = scatter(salaryData.Record(salaryData.Injured), ... salaryData.Salary(salaryData.Injured),'Marker','+', ... 'Linewidth',2); hold on sNotInjured = scatter(salaryData.Record(~salaryData.Injured), ... salaryData.Salary(~salaryData.Injured),'Marker','O', ... 'Linewidth',2); hold off sInjured.MarkerFaceColor = 'flat' grid on b = gca title('Player Salary Comparison') xlabel('Record') ylabel('Salary') ytickformat(b,'usd') legend({'Player with Injury','Player Without Injury'},'Location','best')
График рассеивания бейсболистов и их отображений зарплат. Сравните зарплаты для травмированных и непострадавших бейсболистов.