tm_player_market_values()
returning NAs
in
the squad
columntm_
functions were missing the country
and
comp_name
columns due to a change in the html on
transfermarktfb_match_shooting()
throwing errors for duplicate
column names after switch from StatsBomb to Opta on FBReffb_team_goal_logs
and fb_player_goal_logs
gave errors when columns were not presentfotmob_get_season_stats
returning lexical error #201fotmob_get_season_stats
internals changed to handle new
data formattm_staff_job_history()
code changed due to HTML changes
on transfermarkt.com.get_match_report_page()
were returning ‘Major League
Soccer’ as the away team #216fb_match_shooting()
was returning the wrong home or
away designation in games where team names were inconsistent on the page
#219fb_match_summary()
, fb_match_shooting()
not returning returning Away Team name for international matchesfb_match_lineups()
returning ‘Major League Soccer’ as
the away team for international matches #221load_fb_big5_advanced_season_stats()
now loads FBRef
data provided by Stats Perform (Opta) via Github releasesload_match_results()
now loads FBRef data provided by
Stats Perform (Opta) via Github releasesload_match_comp_results()
now loads FBRef data provided
by Stats Perform (Opta) via Github releasesload_understat_league_shots()
now loads data from
GitHub releasesfb_team_goal_logs
- returns the team’s season goals for
and goals against logsfb_player_goal_logs
- returns the player’s career goal
and assist logstm_squad_stats()
throwing differing number of rows
error #187.get_match_report_page()
internal function used in a
number of fb_
functions throwing errors for cup tie legs #174.clean_table_names()
change to internal function that
will include ’*_performance*’ to some column names in
fb_team_match_log_stats()
to address duplicated column
names for stat_type = 'keeper'
#184Some column names in output of fb_team_match_log_stats()
will now include *_Performance* at the end of the name. See #184 for
more details
fb_advanced_match_stats()
replaces
get_advanced_match_stats
fb_match_lineups()
replaces
get_match_lineups
fb_match_results()
replaces
get_match_results
fb_match_report()
replaces
get_match_report
fb_match_shooting()
replaces
get_match_shooting
fb_match_summary()
replaces
get_match_summary
fb_match_urls()
replaces
get_match_urls
fb_season_team_stats()
replaces
get_season_team_stats
fb_team_match_results()
replaces
get_team_match_results
tm_player_market_values()
replaces
get_player_market_values
tm_player_transfer_history
replaces
player_transfer_history
load_fotmob_matches_by_date()
,
load_fotmob_match_details()
: Functions to load pre stored
match ids and match details.fotmob_get_match_details()
,
fotmob_get_matches_by_date()
, and
fotmob_get_match_players()
: Nested list columns are
unnested by default. The lone exception is shotmap
in the
output for fotmob_get_match_players()
fotmob_get_match_info()
added. (#166)fb_squad_wages()
designed to get player wage estimates
from FBref via Capologyload_fb_big5_advanced_season_stats()
returning zero row
df when no season selected. Now rectifiedfotmob_get_season_stats()
: Fixed bug in
.fotmob_get_single_season_stats()
where season ids with
dashes, e.g. "17709-Apertura"
for Liga MX 2022/2023 would
error.fb_big5_advanced_season_stats()
throwing error for team
stats. Also updated to only have one page load, hopefully minimising the
risk of being blocked for excessive page loadsElements changed on FBref somewhere in the same time
v 0.5.11
was being released!
fb_advanced_match_stats()
fb_match_summary()
fb_big5_advanced_season_stats()
throwing error as
Matches played
column now names MP
#158fotmob_get_league_tables()
: Fix unnesting to
accommodate additional nesting and identical names at different levels.
This bug affected fotmob_get_season_stats()
, which calls
fotmob_get_league_tables()
#155fotmob_get_match_players()
returns stats as characters
#150fotmob_get_season_stats()
: Address logic for extracting
season ids from season stats pages that was failing due to blank stats
pages in the offseason for a league.get_match_lineups()
wasn’t returning the away team name
#147understat_league_season_shots()
would error when
passing in a new season_start_year
value for seasons that
haven’t yet started but match fixtures are available on Understat #148FBref functions now pass user agent to headers under the hood
fotmob_get_match_team_stats()
added. The following
functions now no longer return league/season metadata, including columns
League
, Gender
, Country
,
Season
:
fb_match_summary()
fb_advanced_match_stats()
fb_match_report()
fb_advanced_match_stats()
replaces
get_advanced_match_stats
fb_match_lineups()
replaces
get_match_lineups
fb_match_results()
replaces
get_match_results
fb_match_report()
replaces
get_match_report
fb_match_shooting()
replaces
get_match_shooting
fb_match_summary()
replaces
get_match_summary
fb_match_urls()
replaces
get_match_urls
fb_season_team_stats()
replaces
get_season_team_stats
fb_team_match_results()
replaces
get_team_match_results
tm_player_market_values()
replaces
get_player_market_values
tm_player_transfer_history
replaces
player_transfer_history
load_fotmob_matches_by_date()
,
load_fotmob_match_details()
: Functions to load pre stored
match ids and match details.fotmob_get_match_details()
,
fotmob_get_matches_by_date()
, and
fotmob_get_match_players()
: Nested list columns are
unnested by default. The lone exception is shotmap
in the
output for fotmob_get_match_players()
load_understat_league_shots()
Functions to load pre
stored shooting locations for all matches played since the 2014/15
season for the five leagues available on the Understat site.load_match_comp_results()
Functions to load pre stored
match results from domestic and international cups/competitionsfotmob_get_season_stats()
no longer errors out when
stats are queried for a league in its offseason #136player_transfer_history()
no longer throwing errors for
players without a club #137To respect FBref’s rate limiting rules, all functions have now been updated to have a default pause of three seconds between page loads, up from two seconds which was originally requested.
get_match_report()
and
get_advanced_match_stats()
- now reporting the match date
and away team name again. Additionally, Home_Goals
and
Away_Goals
text strings now clean strings (tabs and line
breaks removed) #128fotmob_get_league_ids()
- now uses new endpoint for
league ids (data in script element no longer has data). This function is
internally used by fotmob_get_league_matches()
,
fotmob_get_league_tables()
, and
fotmob_get_season_stats()
, which would have been broken if
cached=FALSE
was specified.player_transfer_history()
no longer throwing errors for
retired players and also addressed changed HTML on transfermarkt
returning no data #127Now starting to have load functions:
load_match_results()
- function to load pre stored data
similar to get_match_results()
load_fb_big5_advanced_season_stats()
- function to load
pre stored data similar to
fb_big5_advanced_season_stats()
tm_player_bio()
addresses where some data points don’t
exist for some players and returns NAsunderstat_team_stats_breakdown()
now returns the
correct season_start_year
value #119stat_name
#118player_transfer_history()
updated after html changes on
Transfermarkt caused function to return zero row data frame #120fotmob_get_league_matches()
and
fotmob_get_league_tables()
after changes to names in JSON
response (fixtures
-> matches
,
tableData
-> table
) #121, #122api/
in URLfotmob_get_season_stats()
fotmob_get_league_matches
and
fotmob_get_league_tables
now check 2 places for the league
endpoint since it changes occasionally.fotmob_get_match_players
gets 3 additional columns:
match_id
, team_id
, team_name
. #105fotmob_get_season_stats
gains
stat_league_name
and can now be used for all leagues since
seasons are programmatically scrapedtm_player_bio()
now also returns the player’s maximum
valuation (max_player_valuation
) and the date that max
valuation was recorded (max_player_valuation_date
).
Note: there will now be an additional two columns to
the outputfotmob_get_league_tables
works properly for international
tournaments.stat_type
argument in
fotmob_get_seasons_stats
renamed to stat_name
to reflect the different set of values that it takes. Valid values are
now equivalent to the options that can be found on the stats page in the
browser, e.g. the
Liverpool player stats page.time_pause
) before each page load to abide by their new
rate limiting rules. See here.
Default is set to 2
seconds.get_each_season_results()
exported
nowtm_player_bio
returning player number instead of name
and also NAs for valuation #109fotmob_get_match_players
failed for non-domestic
leagues because the team
element does id not exist under
the table
element. Fix is to have more robust element for
assigning team ids for players.fotmob_get_seasons_stats
failed for non-domestic
leagues, even when setting cached=TRUE
. Fix was to add
logic such that the latest season for a given league is found from the
“See More” links on a generic stats page.fb_team_match_log_stats()
- to get match logs of
selected stat types for a team(s) for all matches played in a
seasonfotmob_get_league_ids()
- to get Fotmob’s league ids,
which can be specified as an alternative to country
and
league_name
in fotmob_get_league_matches()
and
fotmob_get_league_tables()
fotmob_get_season_stats()
- to get stats for one or
more leagues, at team or player levelfotmob_get_league_matches()
- to select matches for one
or more leaguesfotmob_get_league_tables()
- to get standings for one
or more leaguesfotmob_get_matches_by_date()
- to select matches
occurring on specific day(s)fotmob_get_match_details()
- to get shooting locations
for an individual matchfotmob_get_match_players()
- extract player statistics
from matches.clean_table_names()
(internal function) now able to
clean tab names in fb_team_match_log_stats()
fotmob_get_match_players
and
fotmob_get_match_players()
fotmob_get_league_matches
and
fotmob_get_league_tables
updated to address new Fotmob
league endpoint.fotmob_get_match_players()
no longer returning the
identical home and away team IDs #93stats
column returned in fotmob_get_match_players()
fotmob_get_league_matches
and
fotmob_get_league_tables
updated to address new Fotmob
league endpoint.tm_squad_stats()
now returns team, league information
and also player URLsfb_player_scouting_report()
was returning incorrect
position comparisons in some cases #85get_player_market_values()
was returning no team URLs
for when there was no erroneous URLs in the initial scraped list, and
some columns not returning values due to HTML changes on
transfermarkttm_league_team_urls()
was returning no team URLs for
when there was no erroneous URLs in the initial scraped listget_match_results()
was returning additional
(incorrect) transfermarkt player URLs #82tm_league_debutants()
to be able to extract league
debutantstm_expiring_contracts()
to be able to extract expiring
contracts for a selected leaguetm_league_injuries()
to get all current injuries from a
selected leaguetm_player_injury_history()
to get the full player
injury history on transfermarkt for a selected player(s)fb_player_scouting_report()
had an issue with player
listed as three positions #80get_match_lineups()
now also returns match and player
URLs #78get_match_results()
now includes match URLs #78get_match_report()
now includes yellow and red card
counts #2tm_team_player_urls()
was returning additional
(incorrect) transfermarkt player URLstm_team_staff_urls()
allows users to extract URLs of
selected team staff members based on staff role (ie ‘Manager’,
‘Assistant Manager’, etc)tm_team_staff_history()
allows users to get all people
who have held the selected role in a team’s history and some summary
statisticstm_staff_job_history()
allows users to get all roles a
selected staff member(s) has held and performance data in that role
(wins, draws, losses, etc)tm_player_bio()
coercing other values to listsfb_team_player_stats()
allows users to get all stats
for a team(s) player season statsget_season_team_stats()
now returns an additional
column for MLS called Conference
for when
stat_type = "league_table"
and
stat_type = "league_table_home_away"
fb_player_scouting_report()
Warning: Unexecutable code in man/fb_player_scouting_report.Rd: pos_versus = "primary")
.pkg_message()
to allow users to easily suppress
messages outputted to the console by setting
options(mypackage.verbose = FALSE)
understat_
functions now return the
correct full season details (ie for
season_start_year = 2019
, the resulting season
column in the df will be ‘2019/2020’)understat_team_players_stats()
gets season-long player
stats for selected teamsunderstat_team_stats_breakdown()
gets team season
shooting data broken down into game statesunderstat_team_meta()
created to allow for the
extraction of team season URLsfotmob_get_matches_by_date()
and
fotmob_get_match_details()
added #61fb_player_scouting_report()
now contains an additional
column in the output (scouting_period
) that allows the user
to filter on the period they need the scouting report forplayer_dictionary_mapping()
#56get_match_summary()
and
get_match_lineups()
not returning results for games that
were canceled/postponed #55tm_player_bio()
throwing errors due to change in
html on Transfermarkt #57tm_player_bio()
throwing errors due to another
change in html on Transfermarkttm_team_transfers()
now includes which transfer window
the transfer occurred in #53tm_team_transfers()
now also includes player URLs from
Transfermarkt to allow for joining with player market values #51get_player_market_values()
now returning the correct
current (current_club
) and previous
(previous_club
) clubs for playersfb_player_season_stats()
was not returning results for
some players even though stats were available on FBref #52tm_player_bio()
now returns player market valuations #50player_dictionary_mapping()
returns a data frame of
players (names and FBref URLs) who have played in the top 5 Euro leagues
and their respective Transfermarkt URLTransfermarkt functions tm_team_transfers()
and
player_transfer_history()
returning transfer prices now
differentiate between unknown (returning NA
) to free
transfers (returning 0
) #45 *
fb_big5_advanced_season_stats()
now returns player URLs
from FBref
get_match_summary()
no longer throws errors where only
one team (home or away) didn’t have a recorded event #46fb_player_season_stats()
handles with print statement
when stat types are not present for players #33Team
in the data frame column returned by
get_match_shooting()
no longer exists, with
Squad
being elevated in to it’s place instead.get_player_market_values()
returning errors for seasons
prior to current season #41tm_team_transfers()
handles for missing values for some
teams/leaguesget_match_shooting()
handles for extra time
periodsfb_player_scouting_report()
now returns results for
Goalkeepers also #42get_match_shooting()
now handles for when only one team
(home or away) record any shots #43The following functions now return results for international matches fro FBref:
get_match_urls()
get_match_results()
get_match_report()
get_match_summary()
get_match_lineups()
get_match_shooting()
get_advanced_match_stats()
The following transfermarkt function has been improved:
tm_team_transfers()
now includes a column for
season
player_transfer_history()
returns results even when
player hasn’t got a club to go to #37tm_player_bio()
returning error when player valuations
not available on transfermarkt.comget_match_shooting()
returning duplicated home shots
data and not including away shotsget_match_summary()
not returning all Event_Players
where special characters usedFunctions to extract understat.com data now available: * Shots
locations data: * understat_league_season_shots()
to get
shot location data for all matches in a league season *
understat_team_season_shots()
to get shot locations for and
against a select team * understat_match_shots()
to get shot
locations for a selected match * understat_player_shots()
to get all available shot locations for games played by a selected
player * understat_league_match_results()
to get results
and match data for all matches played in a season
New transfermarkt.com functions: * tm_player_bio()
to
get player bios from transfermarkt * tm_team_transfers()
to
get all arrival and departures for a team season *
tm_squad_stats()
to get basic squad stats for teams for a
season * Helper functions: * tm_league_team_urls()
to get
teams URLs for a league season * tm_team_player_urls()
to
get player URLs for a given team
get_player_market_values()
from transfermarkt now
includes player heights, their preferred foot, when they joined the club
and where from and when their contract expiresplayer_transfer_history()
now includes remaining
contract expiry data and remaining contract length (in days) #34get_match_lineups()
now identifies diamond
formationsevent_time
, event_type
,
event_players
and score_progression
changed
for get_match_summary()
, and additional columns addedfb_player_season_stats()
now able to accept multiple
player_url
valuesget_match_summary()
now contains additional columns:
Is_Pens
to indicate whether the event is from a penalty
shootoutEvent_Half
to indicate which half the event occurred in
(1, 2, 3, 4, 5), with 3 & 4 being extra time and 5 being penalty
shootoutPenalty_Number
for penalty shootouts, the penalty
taking orderget_match_results()
not returning data for seasons before
2014-15get_advanced_match_stats()
, get_match_report()
and get_match_summary()
not returning results for lower
than tier 1 leaguesget_match_summary()
where event times causing issues in
extra time of match half (ie 45+3 as opposed to 46th minute)fb_player_season_stats()
where players not having played a
game were previously causing errorsfb_player_match_logs()
to get player match logs for a
season and stat type (issue #26)fb_player_scouting_report()
now returns a players
full scouting report against peers in Men’s Big 5
Leagues and European Competition over the last 365 days (issue 27)Squad
column of
the data frame returned using fb_player_season_stats()
get_match_shooting()
to get shot and shot creation
specific details (issue #3)get_team_match_results()
to get match results for a
given team or teams in a seasonget_match_lineups()
now returns additional summary
player performance data (shots, goals, cards, etc) to the original
lineups outputget_season_player_stats()
not
returning results for players who have only played in domestic comps
(not cups, internationals, etc) (issue #22)fb_big5_advanced_season_stats()
not
returning results for ‘playing_time’ stat_type (issue #23)tm_team_transfer_balances()
to get team total transfer
income and expenditure datatm_matchday_table()
to get league table after each
specified matchday(s)fb_league_urls()
as a
result of including “Big 5” competition issue #19fb_big5_advanced_season_stats()
to get fbref
season stats for all players or teams stats in the big five Euro
leaguesfb_league_urls()
to get fbref league URLs for a given
country, gender, season, tierfb_teams_urls()
to get fbref team URLs for a given
league_urlfb_player_urls()
to get fbref player URLs for a given
team_urlfb_player_scouting_report()
fb_player_season_stats()
get_match_urls()
,
get_match_results()
,
get_season_team_stats()
league_url
argument to
get_player_market_values()
to allow extraction of
non-standard (leagues not stored in
worldfootballR_data
) leaguesget_player_market_values()
data outputJaseZiv/worldfootballR_data
instead)get_player_market_values
to get player valuations
from transfermarkt.comget_match_results()
get_match_urls()
get_season_team_stats()
get_match_report()
get_match_lineups()
get_advanced_match_statistics()
get_match_summary()