#Introdução
Obtendo dados da API do Statsbomb, versão gratuíta da API que contém informações de partidas e equipes. Aqui, olharemos os dados de performance da seleção espanhola na última Eurocopa, disputada em 2024 na Alemanha.
#Objetivo O objetivo desta analise é entender o comportamento da seleção espanhola na última Eurocopa com relação ao Xg (Expected Goals), usando medidas de dispersão e posição bem como o plot final dos gráficos e devidas conclusões.
#install.packages("devtools")
#devtools::install_github("statsbomb/StatsBombR")
#install.packages("tidyverse")
library(StatsBombR)
## Carregando pacotes exigidos: dplyr
##
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
##
## filter, lag
## Os seguintes objetos são mascarados por 'package:base':
##
## intersect, setdiff, setequal, union
## Carregando pacotes exigidos: stringi
## Carregando pacotes exigidos: stringr
## Carregando pacotes exigidos: tibble
## Carregando pacotes exigidos: rvest
## Carregando pacotes exigidos: RCurl
## Carregando pacotes exigidos: doParallel
## Carregando pacotes exigidos: foreach
## Carregando pacotes exigidos: iterators
## Carregando pacotes exigidos: parallel
## Carregando pacotes exigidos: httr
## Carregando pacotes exigidos: jsonlite
## Carregando pacotes exigidos: purrr
##
## Anexando pacote: 'purrr'
## O seguinte objeto é mascarado por 'package:jsonlite':
##
## flatten
## Os seguintes objetos são mascarados por 'package:foreach':
##
## accumulate, when
## Carregando pacotes exigidos: sp
## Carregando pacotes exigidos: tidyr
##
## Anexando pacote: 'tidyr'
## O seguinte objeto é mascarado por 'package:RCurl':
##
## complete
## Warning: substituindo importação prévia 'jsonlite::flatten' por
## 'purrr::flatten' quando carregando 'StatsBombR'
## Warning: substituindo importação prévia 'foreach::when' por 'purrr::when'
## quando carregando 'StatsBombR'
## Warning: substituindo importação prévia 'foreach::accumulate' por
## 'purrr::accumulate' quando carregando 'StatsBombR'
library(tidyr)
library(ggplot2)
library(dplyr)
library(ggimage)
library(jpeg)
library(grid)
Inicio de leitura de API - pegando todos os dados gratuitos da API do Statsbomb
Ligas = FreeCompetitions()
## [1] "Whilst we are keen to share data and facilitate research, we also urge you to be responsible with the data. Please credit StatsBomb as your data source when using the data and visit https://statsbomb.com/media-pack/ to obtain our logos for public use."
torneios <- FreeCompetitions()%>% # Competition filtrate
filter(competition_id == 55 & season_id == 282) # Pegando aqui apenas as informações da Euro 2024
## [1] "Whilst we are keen to share data and facilitate research, we also urge you to be responsible with the data. Please credit StatsBomb as your data source when using the data and visit https://statsbomb.com/media-pack/ to obtain our logos for public use."
#variavel 1 competition_id e variavel 2 season_id dentro do dataset
#Free Matches - Pegando as informações de todas as partidas da Euro 2024
Matches <- FreeMatches(torneios)
## [1] "Whilst we are keen to share data and facilitate research, we also urge you to be responsible with the data. Please credit StatsBomb as your data source when using the data and visit https://statsbomb.com/media-pack/ to obtain our logos for public use."
StatsBombData <- free_allevents(MatchesDF = Matches, Parallel = TRUE) #All the events, data frame per matches
## [1] "Whilst we are keen to share data and facilitate research, we also urge you to be responsible with the data. Please credit StatsBomb as your data source when using the data and visit https://statsbomb.com/media-pack/ to obtain our logos for public use."
euro24 <- allclean(StatsBombData) # higienização dos dados
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(id)`
## Joining with `by = join_by(period, match_id)`
names(euro24) #Mostra todas as variaveis do DF
## [1] "id" "index"
## [3] "period" "timestamp"
## [5] "minute" "second"
## [7] "possession" "duration"
## [9] "related_events" "location"
## [11] "under_pressure" "counterpress"
## [13] "off_camera" "out"
## [15] "type.id" "type.name"
## [17] "possession_team.id" "possession_team.name"
## [19] "play_pattern.id" "play_pattern.name"
## [21] "team.id" "team.name"
## [23] "tactics.formation" "tactics.lineup"
## [25] "player.id" "player.name"
## [27] "position.id" "position.name"
## [29] "pass.length" "pass.angle"
## [31] "pass.end_location" "pass.through_ball"
## [33] "pass.aerial_won" "pass.cross"
## [35] "pass.assisted_shot_id" "pass.shot_assist"
## [37] "pass.switch" "pass.deflected"
## [39] "pass.outswinging" "pass.cut_back"
## [41] "pass.goal_assist" "pass.recipient.id"
## [43] "pass.recipient.name" "pass.height.id"
## [45] "pass.height.name" "pass.body_part.id"
## [47] "pass.body_part.name" "pass.type.id"
## [49] "pass.type.name" "pass.outcome.id"
## [51] "pass.outcome.name" "pass.technique.id"
## [53] "pass.technique.name" "carry.end_location"
## [55] "ball_receipt.outcome.id" "ball_receipt.outcome.name"
## [57] "dribble.outcome.id" "dribble.outcome.name"
## [59] "interception.outcome.id" "interception.outcome.name"
## [61] "duel.type.id" "duel.type.name"
## [63] "duel.outcome.id" "duel.outcome.name"
## [65] "goalkeeper.end_location" "goalkeeper.punched_out"
## [67] "goalkeeper.type.id" "goalkeeper.type.name"
## [69] "goalkeeper.outcome.id" "goalkeeper.outcome.name"
## [71] "goalkeeper.technique.id" "goalkeeper.technique.name"
## [73] "goalkeeper.position.id" "goalkeeper.position.name"
## [75] "goalkeeper.body_part.id" "goalkeeper.body_part.name"
## [77] "clearance.head" "clearance.right_foot"
## [79] "clearance.aerial_won" "clearance.left_foot"
## [81] "clearance.body_part.id" "clearance.body_part.name"
## [83] "foul_committed.advantage" "foul_committed.penalty"
## [85] "foul_committed.card.id" "foul_committed.card.name"
## [87] "foul_won.advantage" "foul_won.penalty"
## [89] "foul_won.defensive" "shot.statsbomb_xg"
## [91] "shot.end_location" "shot.freeze_frame"
## [93] "shot.key_pass_id" "shot.first_time"
## [95] "shot.aerial_won" "shot.deflected"
## [97] "shot.technique.id" "shot.technique.name"
## [99] "shot.body_part.id" "shot.body_part.name"
## [101] "shot.type.id" "shot.type.name"
## [103] "shot.outcome.id" "shot.outcome.name"
## [105] "block.save_block" "block.deflection"
## [107] "injury_stoppage.in_chain" "50_50.outcome.id"
## [109] "50_50.outcome.name" "substitution.outcome.id"
## [111] "substitution.outcome.name" "substitution.replacement.id"
## [113] "substitution.replacement.name" "bad_behaviour.card.id"
## [115] "bad_behaviour.card.name" "match_id"
## [117] "competition_id" "season_id"
## [119] "pass.inswinging" "pass.no_touch"
## [121] "dribble.nutmeg" "dribble.overrun"
## [123] "shot.one_on_one" "foul_committed.offensive"
## [125] "ball_recovery.recovery_failure" "block.offensive"
## [127] "clearance.other" "foul_committed.type.id"
## [129] "foul_committed.type.name" "miscontrol.aerial_won"
## [131] "pass.straight" "shot.open_goal"
## [133] "shot.saved_to_post" "goalkeeper.shot_saved_to_post"
## [135] "goalkeeper.success_in_play" "dribble.no_touch"
## [137] "ball_recovery.offensive" "pass.miscommunication"
## [139] "player_off.permanent" "shot.follows_dribble"
## [141] "shot.saved_off_target" "goalkeeper.shot_saved_off_target"
## [143] "goalkeeper.penalty_saved_to_post" "shot.redirect"
## [145] "location.x" "location.y"
## [147] "carry.end_location.x" "carry.end_location.y"
## [149] "pass.end_location.x" "pass.end_location.y"
## [151] "shot.end_location.x" "shot.end_location.y"
## [153] "shot.end_location.z" "shot_impact_height"
## [155] "player.name.GK" "player.id.GK"
## [157] "location.x.GK" "location.y.GK"
## [159] "DistToGoal" "DistToKeeper"
## [161] "AngleToGoal" "AngleToKeeper"
## [163] "AngleDeviation" "avevelocity"
## [165] "DistSGK" "density"
## [167] "density.incone" "distance.ToD1"
## [169] "distance.ToD2" "AttackersBehindBall"
## [171] "DefendersBehindBall" "DefendersInCone"
## [173] "InCone.GK" "DefArea"
## [175] "distance.ToD1.360" "distance.ToD2.360"
## [177] "milliseconds" "ElapsedTime"
## [179] "StartOfPossession" "TimeInPoss"
## [181] "TimeToPossEnd"
str(euro24) #Verificação estrutura do codigo
## tibble [187,858 × 181] (S3: tbl_df/tbl/data.frame)
## $ id : chr [1:187858] "f2207d37-beed-4073-84a5-f9d696e2afdd" "43e494fe-4871-4b2a-a509-a325c17a5e3f" "d9de8fe7-3122-4067-a1c2-a742c7edb2b8" "455f819f-3926-4ed4-a0e9-4e9e4d0bf95a" ...
## $ index : int [1:187858] 1 2 3 4 5 6 7 8 9 10 ...
## $ period : int [1:187858] 1 1 1 1 1 1 1 1 1 1 ...
## $ timestamp : chr [1:187858] "00:00:00.000" "00:00:00.000" "00:00:00.000" "00:00:00.000" ...
## $ minute : int [1:187858] 0 0 0 0 0 0 0 0 0 0 ...
## $ second : int [1:187858] 0 0 0 0 1 2 2 4 7 7 ...
## $ possession : int [1:187858] 1 1 1 1 2 2 2 2 2 2 ...
## $ duration : num [1:187858] 0 0 0 0 1.23 ...
## $ related_events :List of 187858
## ..$ : NULL
## ..$ : NULL
## ..$ : chr "455f819f-3926-4ed4-a0e9-4e9e4d0bf95a"
## ..$ : chr "d9de8fe7-3122-4067-a1c2-a742c7edb2b8"
## ..$ : chr "f9195e75-1617-478c-bf9d-66f17151724a"
## ..$ : chr "df6f6fb7-f0b0-4561-9171-f4172f5e97e7"
## ..$ : chr [1:2] "01be895c-5835-4a8d-b99f-2a642f5d26dc" "f9195e75-1617-478c-bf9d-66f17151724a"
## ..$ : chr "9aa6c033-3015-4e13-9566-bd1913f754d3"
## ..$ : chr "01be895c-5835-4a8d-b99f-2a642f5d26dc"
## ..$ : chr "859a97e2-e05a-42c3-a020-32a8d7848300"
## ..$ : chr [1:2] "1b105dba-9074-4a8d-b6cd-ab686d59d32e" "d565ae37-8197-4510-b01f-171a04435ec1"
## ..$ : chr "859a97e2-e05a-42c3-a020-32a8d7848300"
## ..$ : NULL
## ..$ : chr [1:3] "4484cb90-4998-48cd-a0be-472c4be2a2a2" "8226f5a6-a6ef-49cf-b3a7-24146fe8a028" "ed432afe-033b-418b-b366-db95e3b993f0"
## ..$ : chr [1:2] "4484cb90-4998-48cd-a0be-472c4be2a2a2" "44ed9025-a8bd-4455-8a0d-404ddd5e926f"
## ..$ : chr "4484cb90-4998-48cd-a0be-472c4be2a2a2"
## ..$ : chr [1:3] "7040ea80-1599-41ef-9593-0aa783085750" "8226f5a6-a6ef-49cf-b3a7-24146fe8a028" "ce958de1-f077-4032-9604-3ed4b57cea3b"
## ..$ : chr "4484cb90-4998-48cd-a0be-472c4be2a2a2"
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : chr [1:2] "4ea84592-655a-4d31-bc76-d9938673b263" "b7b45596-cde9-4d8c-b794-c3e73ba4f3fd"
## ..$ : chr "19a8e06c-2fb4-4128-be6f-191fd2a489dc"
## ..$ : chr "b7b45596-cde9-4d8c-b794-c3e73ba4f3fd"
## ..$ : chr [1:2] "19a8e06c-2fb4-4128-be6f-191fd2a489dc" "ade698fa-53cd-4ff7-9332-b6eb4ed47ce5"
## ..$ : chr "685ed263-b1a1-4550-90d5-a7e26229cfd2"
## ..$ : chr "ade698fa-53cd-4ff7-9332-b6eb4ed47ce5"
## ..$ : chr [1:2] "4cb8c7fe-1db8-4c06-b473-463024126e07" "685ed263-b1a1-4550-90d5-a7e26229cfd2"
## ..$ : chr "108663ac-6b22-465f-9688-f88997247f7a"
## ..$ : chr "4cb8c7fe-1db8-4c06-b473-463024126e07"
## ..$ : chr [1:2] "108663ac-6b22-465f-9688-f88997247f7a" "27e37054-72de-41cb-bc4e-67c38605afe8"
## ..$ : chr "bab3a6d0-9eb8-4bda-aac4-7aa6d7aa6f80"
## ..$ : chr "27e37054-72de-41cb-bc4e-67c38605afe8"
## ..$ : chr [1:2] "7e833931-3748-4eb1-86bb-4dabc201a469" "bab3a6d0-9eb8-4bda-aac4-7aa6d7aa6f80"
## ..$ : chr "cb7224a5-cd88-4575-8786-367333f18807"
## ..$ : chr "7e833931-3748-4eb1-86bb-4dabc201a469"
## ..$ : chr [1:2] "c1322050-d86c-4af2-97a6-8de461fd1a46" "cb7224a5-cd88-4575-8786-367333f18807"
## ..$ : chr "32878352-978d-415f-bad5-959321938227"
## ..$ : chr "c1322050-d86c-4af2-97a6-8de461fd1a46"
## ..$ : chr [1:2] "32878352-978d-415f-bad5-959321938227" "a899aab9-654a-4ef7-9bf1-6400584f8f45"
## ..$ : chr "08b497c5-2b0b-4d8f-8d1f-4608f2bfa7d7"
## ..$ : chr "a899aab9-654a-4ef7-9bf1-6400584f8f45"
## ..$ : chr [1:2] "08b497c5-2b0b-4d8f-8d1f-4608f2bfa7d7" "4601e89a-f8dc-4825-ac55-dca6f430046b"
## ..$ : chr "c05e3c17-32df-4f69-bdba-0d49624793bc"
## ..$ : chr "4601e89a-f8dc-4825-ac55-dca6f430046b"
## ..$ : chr [1:2] "2ab695d8-3963-48a2-b2c5-4b88adf584a3" "c05e3c17-32df-4f69-bdba-0d49624793bc"
## ..$ : chr "fa001e7e-fea0-4dfe-a50a-879579a0892f"
## ..$ : chr "2ab695d8-3963-48a2-b2c5-4b88adf584a3"
## ..$ : chr [1:3] "1a513bdb-0263-4e6f-993a-3770057af1dc" "88661ed2-4a28-4aca-a727-0aa58b9c1c5c" "fa001e7e-fea0-4dfe-a50a-879579a0892f"
## ..$ : chr "ce943d2f-e46e-40c6-b290-f3929b56953b"
## ..$ : chr "731819a8-06ee-42da-bafb-eab8af8256c9"
## ..$ : chr "88661ed2-4a28-4aca-a727-0aa58b9c1c5c"
## ..$ : chr [1:2] "731819a8-06ee-42da-bafb-eab8af8256c9" "feaee24d-e499-42a2-9e44-d5dc448df522"
## ..$ : chr "c4e31399-0e49-4c4f-8f37-9a8856e77d1e"
## ..$ : chr "feaee24d-e499-42a2-9e44-d5dc448df522"
## ..$ : chr [1:2] "b21e2b41-aa06-4b31-854d-10c6a90cd849" "c4e31399-0e49-4c4f-8f37-9a8856e77d1e"
## ..$ : chr "967b63c3-cad5-4b62-963e-ddbd8b450a46"
## ..$ : chr "b21e2b41-aa06-4b31-854d-10c6a90cd849"
## ..$ : chr [1:2] "76dada83-6910-4157-8161-5c015ff92015" "967b63c3-cad5-4b62-963e-ddbd8b450a46"
## ..$ : chr "1678dc3e-8b91-428b-b546-fa8353ff20f7"
## ..$ : chr "76dada83-6910-4157-8161-5c015ff92015"
## ..$ : chr [1:2] "936a3590-efd6-46fe-b841-aa72817a5907" "fb33909a-1ae5-4eb4-bae0-55f7bcd512b2"
## ..$ : chr "0348beee-4e98-44ff-b53f-2b8851bb0cf8"
## ..$ : chr [1:3] "0348beee-4e98-44ff-b53f-2b8851bb0cf8" "37db18a7-0b6c-455c-b554-64c676e629b0" "fd996ed2-f746-4c5e-b34c-8e89d9cada89"
## ..$ : chr "936a3590-efd6-46fe-b841-aa72817a5907"
## ..$ : chr "936a3590-efd6-46fe-b841-aa72817a5907"
## ..$ : chr "ca3b30e1-c635-4c75-864b-443e16416359"
## ..$ : chr "ea789014-c318-46df-bbc3-e44487466994"
## ..$ : chr [1:2] "ca3b30e1-c635-4c75-864b-443e16416359" "dc42b4d8-709d-4c10-93cd-7e5bbab3690e"
## ..$ : chr "1435135d-acd1-48a6-bf21-06324a1eb919"
## ..$ : chr "dc42b4d8-709d-4c10-93cd-7e5bbab3690e"
## ..$ : chr [1:2] "1435135d-acd1-48a6-bf21-06324a1eb919" "aedd4d09-3a65-42b4-879b-d33465ea565e"
## ..$ : chr "f32a17da-cf43-4ea7-8eb6-ded237b683ce"
## ..$ : chr "aedd4d09-3a65-42b4-879b-d33465ea565e"
## ..$ : chr [1:3] "057ccfc0-cb9a-410e-95bb-6b4a23f62e14" "78ac7949-75e8-4a0d-8099-73a5a32dc3c5" "f32a17da-cf43-4ea7-8eb6-ded237b683ce"
## ..$ : chr [1:2] "78ac7949-75e8-4a0d-8099-73a5a32dc3c5" "b2cce74c-6ea5-4eac-ab68-9abc50e0a32d"
## ..$ : chr [1:2] "057ccfc0-cb9a-410e-95bb-6b4a23f62e14" "44e5e0ac-5fd3-4b3b-9a9d-e8c4eb5a2ccd"
## ..$ : chr "78ac7949-75e8-4a0d-8099-73a5a32dc3c5"
## ..$ : chr [1:2] "477455e7-9d67-4800-abc8-7001bc50f2bd" "bca4fbcd-ad8f-4826-b611-260277215afc"
## ..$ : chr "042c8e71-320e-4156-867d-c0c784db6bc8"
## ..$ : chr "477455e7-9d67-4800-abc8-7001bc50f2bd"
## ..$ : chr [1:4] "042c8e71-320e-4156-867d-c0c784db6bc8" "376937b4-6e6a-45d3-8073-b7ad1ac4dea1" "3820f4f4-14b0-4d09-87e6-ca7510b2fb99" "88b4aed9-834d-44c1-9b69-cf8d552873b7"
## ..$ : chr "477455e7-9d67-4800-abc8-7001bc50f2bd"
## ..$ : chr "88b4aed9-834d-44c1-9b69-cf8d552873b7"
## ..$ : chr [1:2] "00d51359-62c8-4c0f-af00-a50e249872b3" "477455e7-9d67-4800-abc8-7001bc50f2bd"
## ..$ : NULL
## ..$ : chr [1:3] "55039555-a1a9-4f36-b131-5e5f8ad16c92" "a72225a3-e56a-4df6-9823-7922f2e75a52" "e42ff661-484e-4d12-b739-af4879e1aa00"
## ..$ : chr [1:2] "55039555-a1a9-4f36-b131-5e5f8ad16c92" "c7fb112a-fb43-4af2-ab7d-d5937496aff0"
## ..$ : chr [1:2] "baac2150-6145-4b66-9cb4-fcca8fb7532c" "e42ff661-484e-4d12-b739-af4879e1aa00"
## ..$ : chr "55039555-a1a9-4f36-b131-5e5f8ad16c92"
## ..$ : chr [1:2] "33511163-ff57-48fc-b826-3c65a0bf0930" "baac2150-6145-4b66-9cb4-fcca8fb7532c"
## ..$ : chr [1:2] "9dd9a06e-2fbe-46ca-a9f5-d43b5c53f9d6" "d7590514-5c28-479b-9dde-84cb06b3d7cd"
## ..$ : chr "33511163-ff57-48fc-b826-3c65a0bf0930"
## ..$ : chr "33511163-ff57-48fc-b826-3c65a0bf0930"
## ..$ : chr "b39e0b0b-3366-49d2-847f-e19543fa7200"
## ..$ : chr "609a3a4e-bfb6-4f5b-b496-f74145a87824"
## ..$ : chr "864fac4b-a8c3-419f-a161-fe4ac9970fdf"
## ..$ : chr [1:2] "1a1ca614-c880-40da-95bc-8563e4c2b300" "ea80df09-6759-4bf2-9d76-219503f52379"
## ..$ : chr "864fac4b-a8c3-419f-a161-fe4ac9970fdf"
## .. [list output truncated]
## $ location :List of 187858
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 61 40.1
## ..$ : num [1:2] 46.7 28.2
## ..$ : num [1:2] 46.7 28.2
## ..$ : num [1:2] 50.3 18.2
## ..$ : num [1:2] 100.9 44.4
## ..$ : num [1:2] 19.2 35.7
## ..$ : num [1:2] 100.9 44.4
## ..$ : num [1:2] 21.3 36.3
## ..$ : num [1:2] 17.3 33.7
## ..$ : num [1:2] 17.3 33.7
## ..$ : num [1:2] 103.4 49.6
## ..$ : num [1:2] 99 49.4
## ..$ : num [1:2] 18.7 29.6
## ..$ : num [1:2] 99.6 50.9
## ..$ : num [1:2] 17.8 28.6
## ..$ : num [1:2] 20.2 28.9
## ..$ : num [1:2] 56.8 41.9
## ..$ : num [1:2] 56.8 41.9
## ..$ : num [1:2] 57.5 37.6
## ..$ : num [1:2] 62.6 37
## ..$ : num [1:2] 62.6 37
## ..$ : num [1:2] 56.1 40.4
## ..$ : num [1:2] 57.4 56.1
## ..$ : num [1:2] 57.4 56.1
## ..$ : num [1:2] 57.4 52.9
## ..$ : num [1:2] 54.2 40.5
## ..$ : num [1:2] 54.2 40.5
## ..$ : num [1:2] 58 38.2
## ..$ : num [1:2] 57.4 25.5
## ..$ : num [1:2] 57.4 25.5
## ..$ : num [1:2] 62.4 26.8
## ..$ : num [1:2] 76.5 26.2
## ..$ : num [1:2] 76.5 26.2
## ..$ : num [1:2] 76.8 21.9
## ..$ : num [1:2] 72.8 4.6
## ..$ : num [1:2] 72.8 4.6
## ..$ : num [1:2] 70.5 5.4
## ..$ : num [1:2] 56 13.9
## ..$ : num [1:2] 56 13.9
## ..$ : num [1:2] 52.5 18.6
## ..$ : num [1:2] 45.3 39
## ..$ : num [1:2] 45.3 39
## ..$ : num [1:2] 52.3 41.6
## ..$ : num [1:2] 47.6 62.1
## ..$ : num [1:2] 47.6 62.1
## ..$ : num [1:2] 64.3 25.8
## ..$ : num [1:2] 50.1 59.5
## ..$ : num [1:2] 48 41.2
## ..$ : num [1:2] 48 41.2
## ..$ : num [1:2] 48.4 27.1
## ..$ : num [1:2] 57.8 8.8
## ..$ : num [1:2] 57.8 8.8
## ..$ : num [1:2] 53.7 14.8
## ..$ : num [1:2] 40.3 58.5
## ..$ : num [1:2] 40.3 58.5
## ..$ : num [1:2] 48.2 49.1
## ..$ : num [1:2] 97.1 30.7
## ..$ : num [1:2] 37.6 48.4
## ..$ : num [1:2] 97.1 68.4
## ..$ : num [1:2] 24.2 13.3
## ..$ : num [1:2] 43.3 18.7
## ..$ : num [1:2] 78.3 63.9
## ..$ : num [1:2] 50.1 25.7
## ..$ : num [1:2] 63.6 13.4
## ..$ : num [1:2] 63.6 13.4
## ..$ : num [1:2] 78.6 15.4
## ..$ : num [1:2] 97.6 9
## ..$ : num [1:2] 97.6 9
## ..$ : num [1:2] 106.6 23.3
## ..$ : num [1:2] 13.5 56.8
## ..$ : num [1:2] 13.5 56.8
## ..$ : num [1:2] 104.5 27.1
## ..$ : num [1:2] 13.6 58.2
## ..$ : num [1:2] 103.8 21.7
## ..$ : num [1:2] 28.5 80
## ..$ : num [1:2] 56.3 74.9
## ..$ : num [1:2] 57.7 76.3
## ..$ : num [1:2] 62.4 3.8
## ..$ : num [1:2] 71.3 7
## ..$ : num [1:2] 72.1 7.4
## ..$ : num [1:2] 48 72.7
## ..$ : num [1:2] 68.6 3.8
## ..$ : num [1:2] 68.6 3.8
## ..$ : num [1:2] 42.4 75.3
## ..$ : num [1:2] 76.7 4.2
## ..$ : num [1:2] 43.4 75.9
## ..$ : num [1:2] 43.4 75.9
## ..$ : num [1:2] 47.8 73.5
## ..$ : num [1:2] 62.1 75.5
## ..$ : num [1:2] 69.5 5.8
## ..$ : num [1:2] 56.7 80
## ..$ : num [1:2] 77.7 74.5
## ..$ : num [1:2] 42.4 5.6
## ..$ : num [1:2] 77.7 74.5
## ..$ : num [1:2] 86 70.1
## .. [list output truncated]
## $ under_pressure : logi [1:187858] NA NA NA NA NA NA ...
## $ counterpress : logi [1:187858] NA NA NA NA NA NA ...
## $ off_camera : logi [1:187858] NA NA NA NA NA NA ...
## $ out : logi [1:187858] NA NA NA NA NA NA ...
## $ type.id : int [1:187858] 35 35 18 18 30 42 43 30 42 4 ...
## $ type.name : chr [1:187858] "Starting XI" "Starting XI" "Half Start" "Half Start" ...
## $ possession_team.id : int [1:187858] 770 770 770 770 770 770 770 770 770 770 ...
## $ possession_team.name : chr [1:187858] "Germany" "Germany" "Germany" "Germany" ...
## $ play_pattern.id : int [1:187858] 1 1 1 1 9 9 9 9 9 9 ...
## $ play_pattern.name : chr [1:187858] "Regular Play" "Regular Play" "Regular Play" "Regular Play" ...
## $ team.id : int [1:187858] 770 942 770 942 770 770 770 770 770 942 ...
## $ team.name : chr [1:187858] "Germany" "Scotland" "Germany" "Scotland" ...
## $ tactics.formation : int [1:187858] 4231 343 NA NA NA NA NA NA NA NA ...
## $ tactics.lineup :List of 187858
## ..$ :'data.frame': 11 obs. of 5 variables:
## .. ..$ jersey_number: int [1:11] 1 6 2 4 18 23 8 10 21 17 ...
## .. ..$ player.id : int [1:11] 5570 5579 3167 8221 12407 9195 5574 39565 10287 40724 ...
## .. ..$ player.name : chr [1:11] "Manuel Neuer" "Joshua Kimmich" "Antonio Rüdiger" "Jonathan Tah" ...
## .. ..$ position.id : int [1:11] 1 2 3 5 6 9 11 17 19 21 ...
## .. ..$ position.name: chr [1:11] "Goalkeeper" "Right Back" "Right Center Back" "Left Center Back" ...
## ..$ :'data.frame': 11 obs. of 5 variables:
## .. ..$ jersey_number: int [1:11] 1 15 13 6 2 3 4 8 7 11 ...
## .. ..$ player.id : int [1:11] 22379 18797 11116 10540 22308 3655 3620 10534 9974 12510 ...
## .. ..$ player.name : chr [1:11] "Angus Gunn" "Ryan Porteous" "Jack Hendry" "Kieran Tierney" ...
## .. ..$ position.id : int [1:11] 1 3 4 5 7 8 9 11 17 21 ...
## .. ..$ position.name: chr [1:11] "Goalkeeper" "Right Center Back" "Center Back" "Left Center Back" ...
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## .. [list output truncated]
## $ player.id : int [1:187858] NA NA NA NA 8966 12407 12407 12407 8966 11116 ...
## $ player.name : chr [1:187858] NA NA NA NA ...
## $ position.id : int [1:187858] NA NA NA NA 23 6 6 6 23 4 ...
## $ position.name : chr [1:187858] NA NA NA NA ...
## $ pass.length : num [1:187858] NA NA NA NA 18.6 ...
## $ pass.angle : num [1:187858] NA NA NA NA -2.45 ...
## $ pass.end_location :List of 187858
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 46.7 28.2
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 100.9 44.4
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 98.8 43.8
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 20.5 29.2
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 62.6 37
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 57.4 56.1
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 54.2 40.5
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 57.4 25.5
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 76.5 26.2
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 72.8 4.6
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 56 13.9
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 45.3 39
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 47.6 62.1
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 48 41.2
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 57.8 8.8
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 40.3 58.5
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 97.1 30.7
## ..$ : NULL
## ..$ : num [1:2] 95.9 66.8
## ..$ : NULL
## ..$ : num [1:2] 41.8 16.2
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 63.6 13.4
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 97.6 9
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 16.3 58.4
## ..$ : NULL
## ..$ : num [1:2] 57.7 76.3
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 72.1 7.4
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 50.6 74.3
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 77.7 74.5
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 86 70.1
## ..$ : NULL
## .. [list output truncated]
## $ pass.through_ball : logi [1:187858] NA NA NA NA NA NA ...
## $ pass.aerial_won : logi [1:187858] NA NA NA NA NA NA ...
## $ pass.cross : logi [1:187858] NA NA NA NA NA NA ...
## $ pass.assisted_shot_id : chr [1:187858] NA NA NA NA ...
## $ pass.shot_assist : logi [1:187858] NA NA NA NA NA NA ...
## $ pass.switch : logi [1:187858] NA NA NA NA NA NA ...
## $ pass.deflected : logi [1:187858] NA NA NA NA NA NA ...
## $ pass.outswinging : logi [1:187858] NA NA NA NA NA NA ...
## $ pass.cut_back : logi [1:187858] NA NA NA NA NA NA ...
## $ pass.goal_assist : logi [1:187858] NA NA NA NA NA NA ...
## $ pass.recipient.id : int [1:187858] NA NA NA NA 12407 NA NA 8966 NA NA ...
## $ pass.recipient.name : chr [1:187858] NA NA NA NA ...
## $ pass.height.id : int [1:187858] NA NA NA NA 1 NA NA 3 NA NA ...
## $ pass.height.name : chr [1:187858] NA NA NA NA ...
## $ pass.body_part.id : int [1:187858] NA NA NA NA 38 NA NA 38 NA NA ...
## $ pass.body_part.name : chr [1:187858] NA NA NA NA ...
## $ pass.type.id : int [1:187858] NA NA NA NA 65 NA NA NA NA NA ...
## $ pass.type.name : chr [1:187858] NA NA NA NA ...
## $ pass.outcome.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ pass.outcome.name : chr [1:187858] NA NA NA NA ...
## $ pass.technique.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ pass.technique.name : chr [1:187858] NA NA NA NA ...
## $ carry.end_location :List of 187858
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 50.3 18.2
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 18.7 29.6
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 57.5 37.6
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 56.1 40.4
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 57.4 52.9
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 58 38.2
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 62.4 26.8
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 76.8 21.9
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 70.5 5.4
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 52.5 18.6
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 52.3 41.6
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 50.1 59.5
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 48.4 27.1
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 53.7 14.8
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 48.2 49.1
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 78.6 15.4
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 106.6 23.3
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 13.6 58.2
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 76.7 4.2
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : num [1:2] 47.8 73.5
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## .. [list output truncated]
## $ ball_receipt.outcome.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ ball_receipt.outcome.name : chr [1:187858] NA NA NA NA ...
## $ dribble.outcome.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ dribble.outcome.name : chr [1:187858] NA NA NA NA ...
## $ interception.outcome.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ interception.outcome.name : chr [1:187858] NA NA NA NA ...
## $ duel.type.id : int [1:187858] NA NA NA NA NA NA NA NA NA 10 ...
## $ duel.type.name : chr [1:187858] NA NA NA NA ...
## $ duel.outcome.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ duel.outcome.name : chr [1:187858] NA NA NA NA ...
## $ goalkeeper.end_location :List of 187858
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## .. [list output truncated]
## $ goalkeeper.punched_out : logi [1:187858] NA NA NA NA NA NA ...
## $ goalkeeper.type.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ goalkeeper.type.name : chr [1:187858] NA NA NA NA ...
## $ goalkeeper.outcome.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ goalkeeper.outcome.name : chr [1:187858] NA NA NA NA ...
## $ goalkeeper.technique.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ goalkeeper.technique.name : chr [1:187858] NA NA NA NA ...
## $ goalkeeper.position.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ goalkeeper.position.name : chr [1:187858] NA NA NA NA ...
## $ goalkeeper.body_part.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ goalkeeper.body_part.name : chr [1:187858] NA NA NA NA ...
## $ clearance.head : logi [1:187858] NA NA NA NA NA NA ...
## $ clearance.right_foot : logi [1:187858] NA NA NA NA NA NA ...
## $ clearance.aerial_won : logi [1:187858] NA NA NA NA NA NA ...
## $ clearance.left_foot : logi [1:187858] NA NA NA NA NA NA ...
## $ clearance.body_part.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ clearance.body_part.name : chr [1:187858] NA NA NA NA ...
## $ foul_committed.advantage : logi [1:187858] NA NA NA NA NA NA ...
## $ foul_committed.penalty : logi [1:187858] NA NA NA NA NA NA ...
## $ foul_committed.card.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ foul_committed.card.name : chr [1:187858] NA NA NA NA ...
## $ foul_won.advantage : logi [1:187858] NA NA NA NA NA NA ...
## $ foul_won.penalty : logi [1:187858] NA NA NA NA NA NA ...
## $ foul_won.defensive : logi [1:187858] NA NA NA NA NA NA ...
## $ shot.statsbomb_xg : num [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ shot.end_location :List of 187858
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## .. [list output truncated]
## $ shot.freeze_frame :List of 187858
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## ..$ : NULL
## .. [list output truncated]
## $ shot.key_pass_id : chr [1:187858] NA NA NA NA ...
## $ shot.first_time : logi [1:187858] NA NA NA NA NA NA ...
## $ shot.aerial_won : logi [1:187858] NA NA NA NA NA NA ...
## $ shot.deflected : logi [1:187858] NA NA NA NA NA NA ...
## $ shot.technique.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## $ shot.technique.name : chr [1:187858] NA NA NA NA ...
## $ shot.body_part.id : int [1:187858] NA NA NA NA NA NA NA NA NA NA ...
## [list output truncated]
colnames(euro24) #Verificação de colunas
## [1] "id" "index"
## [3] "period" "timestamp"
## [5] "minute" "second"
## [7] "possession" "duration"
## [9] "related_events" "location"
## [11] "under_pressure" "counterpress"
## [13] "off_camera" "out"
## [15] "type.id" "type.name"
## [17] "possession_team.id" "possession_team.name"
## [19] "play_pattern.id" "play_pattern.name"
## [21] "team.id" "team.name"
## [23] "tactics.formation" "tactics.lineup"
## [25] "player.id" "player.name"
## [27] "position.id" "position.name"
## [29] "pass.length" "pass.angle"
## [31] "pass.end_location" "pass.through_ball"
## [33] "pass.aerial_won" "pass.cross"
## [35] "pass.assisted_shot_id" "pass.shot_assist"
## [37] "pass.switch" "pass.deflected"
## [39] "pass.outswinging" "pass.cut_back"
## [41] "pass.goal_assist" "pass.recipient.id"
## [43] "pass.recipient.name" "pass.height.id"
## [45] "pass.height.name" "pass.body_part.id"
## [47] "pass.body_part.name" "pass.type.id"
## [49] "pass.type.name" "pass.outcome.id"
## [51] "pass.outcome.name" "pass.technique.id"
## [53] "pass.technique.name" "carry.end_location"
## [55] "ball_receipt.outcome.id" "ball_receipt.outcome.name"
## [57] "dribble.outcome.id" "dribble.outcome.name"
## [59] "interception.outcome.id" "interception.outcome.name"
## [61] "duel.type.id" "duel.type.name"
## [63] "duel.outcome.id" "duel.outcome.name"
## [65] "goalkeeper.end_location" "goalkeeper.punched_out"
## [67] "goalkeeper.type.id" "goalkeeper.type.name"
## [69] "goalkeeper.outcome.id" "goalkeeper.outcome.name"
## [71] "goalkeeper.technique.id" "goalkeeper.technique.name"
## [73] "goalkeeper.position.id" "goalkeeper.position.name"
## [75] "goalkeeper.body_part.id" "goalkeeper.body_part.name"
## [77] "clearance.head" "clearance.right_foot"
## [79] "clearance.aerial_won" "clearance.left_foot"
## [81] "clearance.body_part.id" "clearance.body_part.name"
## [83] "foul_committed.advantage" "foul_committed.penalty"
## [85] "foul_committed.card.id" "foul_committed.card.name"
## [87] "foul_won.advantage" "foul_won.penalty"
## [89] "foul_won.defensive" "shot.statsbomb_xg"
## [91] "shot.end_location" "shot.freeze_frame"
## [93] "shot.key_pass_id" "shot.first_time"
## [95] "shot.aerial_won" "shot.deflected"
## [97] "shot.technique.id" "shot.technique.name"
## [99] "shot.body_part.id" "shot.body_part.name"
## [101] "shot.type.id" "shot.type.name"
## [103] "shot.outcome.id" "shot.outcome.name"
## [105] "block.save_block" "block.deflection"
## [107] "injury_stoppage.in_chain" "50_50.outcome.id"
## [109] "50_50.outcome.name" "substitution.outcome.id"
## [111] "substitution.outcome.name" "substitution.replacement.id"
## [113] "substitution.replacement.name" "bad_behaviour.card.id"
## [115] "bad_behaviour.card.name" "match_id"
## [117] "competition_id" "season_id"
## [119] "pass.inswinging" "pass.no_touch"
## [121] "dribble.nutmeg" "dribble.overrun"
## [123] "shot.one_on_one" "foul_committed.offensive"
## [125] "ball_recovery.recovery_failure" "block.offensive"
## [127] "clearance.other" "foul_committed.type.id"
## [129] "foul_committed.type.name" "miscontrol.aerial_won"
## [131] "pass.straight" "shot.open_goal"
## [133] "shot.saved_to_post" "goalkeeper.shot_saved_to_post"
## [135] "goalkeeper.success_in_play" "dribble.no_touch"
## [137] "ball_recovery.offensive" "pass.miscommunication"
## [139] "player_off.permanent" "shot.follows_dribble"
## [141] "shot.saved_off_target" "goalkeeper.shot_saved_off_target"
## [143] "goalkeeper.penalty_saved_to_post" "shot.redirect"
## [145] "location.x" "location.y"
## [147] "carry.end_location.x" "carry.end_location.y"
## [149] "pass.end_location.x" "pass.end_location.y"
## [151] "shot.end_location.x" "shot.end_location.y"
## [153] "shot.end_location.z" "shot_impact_height"
## [155] "player.name.GK" "player.id.GK"
## [157] "location.x.GK" "location.y.GK"
## [159] "DistToGoal" "DistToKeeper"
## [161] "AngleToGoal" "AngleToKeeper"
## [163] "AngleDeviation" "avevelocity"
## [165] "DistSGK" "density"
## [167] "density.incone" "distance.ToD1"
## [169] "distance.ToD2" "AttackersBehindBall"
## [171] "DefendersBehindBall" "DefendersInCone"
## [173] "InCone.GK" "DefArea"
## [175] "distance.ToD1.360" "distance.ToD2.360"
## [177] "milliseconds" "ElapsedTime"
## [179] "StartOfPossession" "TimeInPoss"
## [181] "TimeToPossEnd"
Variável em analise XG - criando um dataframe com as informações de Xg da seleção
xg = data.frame(xg = euro24$shot.statsbomb_xg,player = euro24$player.name,selecao = euro24$team.name)
xg <- xg %>%
filter(!is.na(xg), !is.na(player)) #Limpando dados N/A
#Selecionando apenas dados da seleção espanhola
spain_data <- xg%>%filter(selecao == "Spain")
#Obtendo medidas estatisticas com relação ao Xg da seleção espanhola
#Definição das medidas utilizadas:
**Média: A média é uma medida que representa uma medida de tendência central de um conjunto de dados. É calculada somando-se todos os valores de um conjunto de dados e dividindo pelo número total de observações.
#1 - Média
media_xg = mean(spain_data$xg)
media_xg
## [1] 0.0859713
## Média = 0.0859713
**Amplitude: a amplitude é definida como uma medida de dispersão simples que representa a diferença entre o maior e o menor valor de um conjunto de dados.
##2 - Amplitude
max = max(spain_data$xg)
min = min(spain_data$xg)
amplitude = max - min
amplitude ##0.4192392
## [1] 0.4192392
**Variancia: variância é definida como uma medida de dispersão que indica o quanto os dados de um conjunto se afastam da média. Ela mede a variabilidade dos dados em relação à média, sendo crucial para entender a distribuição dos valores.
##3 - Variancia
variancia = var(spain_data$xg)
variancia
## [1] 0.006797778
### Variancia == 0.006797778 --- Variancia baixa indica que a maioria dos dados está mais concentrada em torno da média
**Desvio Padrão: O desvio padrão é definido como a medida de dispersão que representa a raiz quadrada da variância. Ele indica, em média, o quanto os valores de um conjunto de dados se desviam da média.
##4 - Desvio Padrão
dev_pad = sd(spain_data$xg)
dev_pad
## [1] 0.08244864
### Dev Pad == 0.08244864
**Coeficiente de variação: o coeficiente de variação (CV) é apresentado como uma medida relativa de dispersão, expressa em percentual. Ele relaciona o desvio padrão com a média do conjunto de dados, permitindo comparar a variabilidade de diferentes conjuntos, mesmo que possuam unidades ou médias distintas.
### 5- Calculo de coeficiente de variação
cv = (dev_pad/media_xg)*100
cv
## [1] 95.90251
##CV = 95,2% - Indica que mesmo os dados mais concentrados em torno da média, ainda há uma alta dispersão em relação a ela
**Assimetria:A assimetria mede o grau de simetria da distribuição em relação à média. Indica se os dados estão mais concentrados à esquerda ou à direita da média.Assimetria positiva (Sk > 0): Cauda mais longa à direita (distribuição inclinada para a direita). Assimetria negativa (Sk < 0): Cauda mais longa à esquerda (distribuição inclinada para a esquerda). Assimetria nula (Sk = 0): Distribuição simétrica (similar à distribuição normal).
**Curtose: Mede o grau de achatamento da distribuição dos dados.Curtose positiva (K > 0): Distribuição mais “pontiaguda” que a normal (Leptocúrtica). Apresenta caudas mais pesadas. Curtose negativa (K < 0): Distribuição mais achatada que a normal (Platicúrtica). Apresenta caudas mais leves. Curtose nula (K = 0): Distribuição com a mesma “pontiagudez” da normal (Mesocúrtica).
assimetria <- function(y) {
n <- length(y) # Número de observações
media <- mean(y) # Média dos dados
desvio_padrao <- sd(y) # Desvio padrão dos dados
soma <- sum((y - media)^3) / n # Soma das diferenças elevadas ao cubo
skewness <- soma / (desvio_padrao^3) # Fórmula da assimetria
return(skewness)
}
assimetria(spain_data$xg) # Chama a função e calcula
## [1] 1.612748
### Assimetria de 1.612 -- Como é maior que zero, indica cauda longa a direita, ou seja, a distribuição é positivamente assimétrica
###7 - Calculo de curtose
library(moments)
curtose <- kurtosis(spain_data$xg)
curtose
## [1] 5.229391
### Curtose == 5.229 -- como a curtose é positiva, indica uma distribuição mais "pontiaguda" - leptocurtica
Visualização Gráfica
hist(spain_data$xg)
plot(spain_data$xg)
boxplot(spain_data$xg)
library(ggplot2)
#Classes
summary(spain_data$xg)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.006101 0.029745 0.054384 0.085971 0.103810 0.425340
spain_data$eficiencia_chute = dplyr::case_when(
spain_data$xg < 0.006101 ~ "baixa",
spain_data$xg >= 0.006101 & spain_data$xg <= 0.0859 ~ "media",
spain_data$xg > 0.0859 ~ "alta",
TRUE ~ "indefinido")
head(spain_data)
## xg player selecao eficiencia_chute
## 1 0.05367552 Álvaro Borja Morata Martín Spain media
## 2 0.04807823 Lamine Yamal Nasraoui Ebana Spain media
## 3 0.42534040 Álvaro Borja Morata Martín Spain alta
## 4 0.05613009 Fabián Ruiz Peña Spain media
## 5 0.10839211 Robin Aime Robert Le Normand Spain alta
## 6 0.30100337 Daniel Carvajal Ramos Spain alta
frequencia = table(spain_data$eficiencia_chute)
frequencia
##
## alta media
## 37 86
length(spain_data$xg) #123
## [1] 123
barplot(frequencia)
table(spain_data$player)
##
## Álvaro Borja Morata Martín Aymeric Laporte
## 14 5
## Ayoze Pérez Gutiérrez Daniel Carvajal Ramos
## 3 2
## Daniel Olmo Carvajal Daniel Vivian Moreno
## 17 1
## Fabián Ruiz Peña Fermin Lopez Marin
## 17 2
## Ferrán Torres García José Luis Sanmartín Mato
## 5 3
## Lamine Yamal Nasraoui Ebana Marc Cucurella Saseta
## 18 1
## Mikel Merino Zazón Mikel Oyarzabal Ugarte
## 3 6
## Nicholas Williams Arthuer Pedro González López
## 12 6
## Robin Aime Robert Le Normand Rodrigo Hernández Cascante
## 3 5
jogadores = as.data.frame(table(spain_data$player))
jogadores
## Var1 Freq
## 1 Álvaro Borja Morata Martín 14
## 2 Aymeric Laporte 5
## 3 Ayoze Pérez Gutiérrez 3
## 4 Daniel Carvajal Ramos 2
## 5 Daniel Olmo Carvajal 17
## 6 Daniel Vivian Moreno 1
## 7 Fabián Ruiz Peña 17
## 8 Fermin Lopez Marin 2
## 9 Ferrán Torres García 5
## 10 José Luis Sanmartín Mato 3
## 11 Lamine Yamal Nasraoui Ebana 18
## 12 Marc Cucurella Saseta 1
## 13 Mikel Merino Zazón 3
## 14 Mikel Oyarzabal Ugarte 6
## 15 Nicholas Williams Arthuer 12
## 16 Pedro González López 6
## 17 Robin Aime Robert Le Normand 3
## 18 Rodrigo Hernández Cascante 5
colnames(jogadores)
## [1] "Var1" "Freq"
jogadores$Freq = as.numeric(jogadores$Freq)
summary(jogadores$Freq)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 3.000 5.000 6.833 10.500 18.000
jogadores$repeticoes = dplyr::case_when(
jogadores$Freq < 1 ~ "baixa",
jogadores$Freq >= 1 & jogadores$Freq <= 6.833 ~ "media",
jogadores$Freq > 6.833 ~ "alta",
TRUE ~ "indefinido")
frequencia2 = table(jogadores$repeticoes)
frequencia2
##
## alta media
## 5 13
barplot(frequencia2)
spain_data = spain_data%>%
filter(xg > 0.0859)
fig1 = ggplot(spain_data,aes(x=xg,y=player)) +
geom_point(size = 2.5,color = "tomato") +
geom_text(aes(label = eficiencia_chute),vjust = 1.5,size = 2.5) +
labs(title = "Analise da Eficiencia de Chute (Xg)",subtitle = "Competição: Euro2024, Seleção da Espanha",caption = "DataViz|Daniel Pessoa Soeiro, Dataset|Open API do Statsbomb") +
theme_minimal()
ggsave("analise_xg_espanha.png",
plot = fig1,
width = 8,
height = 6,
units = "in",
bg = "white",
dpi = 300)
names(spain_data)
## [1] "xg" "player" "selecao" "eficiencia_chute"
ggplot(data = spain_data,aes(x=xg,y=player)) +
geom_point() +
theme_minimal()