Estudo sobre os stats do EA FC 24

Introdução

Por que analisar esses dados? A análise detalhada dos atributos estatísticos dos jogadores do EA FC 24 revela-se fundamental para identificar e compreender a performance de cada atleta no jogo. Esses stats são indicadores-chave que refletem as habilidades e características individuais de cada jogador, influenciando diretamente seu desempenho em campo.

Ao explorar os dados provenientes do conjunto fornecido pelo Kaggle, é possível extrair insights valiosos sobre quem são os melhores jogadores, quais características específicas contribuem para seu destaque e como esses atributos variam entre diferentes atletas. Desde habilidades técnicas, como dribles e chutes precisos, até atributos físicos, como velocidade e resistência, cada stat desempenha um papel crucial no desempenho global do jogador.

Esta análise oferece uma visão aprofundada das nuances do desempenho dos jogadores, permitindo aos entusiastas e pro players do jogo tomar decisões informadas ao montar equipes ou desenvolver estratégias de jogo. Ao compreender a variação nos stats, os jogadores podem ajustar suas táticas de acordo com as necessidades específicas de cada partida, maximizando suas chances de sucesso.

Em resumo, a análise dos stats dos jogadores do EA FC 24 não apenas destaca os melhores atletas, mas também proporciona uma compreensão abrangente das características individuais que definem o sucesso em campo. Essa abordagem analítica é essencial para jogadores, treinadores e entusiastas que buscam elevar seu desempenho no jogo e explorar as complexidades que tornam cada partida única.

Apesar da mesma nota, não são o mesmo jogador

Pode parecer intuitivo calcular uma média dos números abaixo do nome do jogador para determinar sua nota, certo? Na realidade, jogadores com a mesma nota, como Marcus Rashford e Jack Grealish (ambos com nota 85), podem ter características bastante distintas. Existem atributos que formam esses números (nesse estudo chamaremos de “stats”).

Marcus Rashford (Man Utd) Jack Grealish (Man City)

Diferença nos Stats: Ambos possuem a mesma nota, mas uma análise detalhada revela diferenças significativas em atributos específicos que influenciam seu desempenho em campo.

Em casos como Vini Jr. e Neymar Jr., mesmo com stats de finalização semelhantes, é crucial considerar que certos stats, como Cobrança de Falta e Pênaltis, podem impactar a pontuação geral de maneiras distintas.

Vini Jr. (Real Madrid) Neymar Jr. (Al Hilal)

Etapas de desenvolvimento

O que eu preciso para executar e o que posso extrair desse estudo?

Obtenção dos dados

Onde foram obtidos? O que eu preciso para analisar esses dados?

Dados originais

Os dados a seguir foram obtidos através deste link do kaggle

Pacotes utilizados

Pacote Utilização
library(rmdformats) fornece o formato de R Markdown utilizado nesse relatório
library(knitr) para geração de tabelas
library(DT) para criação das tabelas interativas
library(dplyr) para manipulação avançada dos DataFrames
library(readr) para melhor leitura do arquivo .csv de dados
library(stringr) para manipulação avançada de strings
library(ggplot2) para a visualização avançada de gráficos
library(tidyr) para manipulação e limpeza de dados

Os pacotes podem ser instalados através dos seguintes códigos:

install.packages("rmdformats")
install.packages("knitr")
install.packages("DT")
install.packages("dplyr")
install.packages("readr")
install.packages("stringr")
install.packages('ggplot2')
install.packages('tidyr')

Preparação dos dados

Manipulações necessárias no data set original, para que o estudo pudesse ser realizado de maneira mais precisa.

Correção de acentos no arquivo original

Nomes dos jogadores: Por existirem diversos jogadores de diversas nacionalidades, existem muitos acentos dos diferentes alfabetos, foi necessário corrigir padrão por padrão, para manter o nome dos jogadores certos.

dados_fifa <- read_csv("C:/Users/lsvfi/Documents/R/Scripts/player_stats.csv", quote = "\"", locale = locale(encoding = "latin1"))

# Correção dos acentos jogadores
dados_fifa$player <- str_replace_all(dados_fifa$player, "á", "á")
dados_fifa$player <- str_replace_all(dados_fifa$player, "é", "é")
dados_fifa$player <- str_replace_all(dados_fifa$player, "í", "í")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ó", "ó")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ú", "ú")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ä", "ä")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ë", "ë")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ï", "ï")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ö", "ö")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ü", "ü")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ğ", "ğ")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ã", "ã")
dados_fifa$player <- str_replace_all(dados_fifa$player, "æ", "æ")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ą", "ą")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ø", "ø")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Á", "Á")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ć", "ć")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å ", "Š")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å¡", "š")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã¥", "å")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ö", "Ö")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ñ", "ñ")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ș", "Ș")
dados_fifa$player <- str_replace_all(dados_fifa$player, "â", "â")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ț", "ț")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ó", "Ó")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ă", "ă")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ș", "ș")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ç", "Ç")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ı", "ı")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ç", "ç")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ð", "ð")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ß", "ß")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ž", "ž")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ş", "ş")
dados_fifa$player <- str_replace_all(dados_fifa$player, "č", "č")
dados_fifa$player <- str_replace_all(dados_fifa$player, "É", "É")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ô", "ô")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ł", "ł")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ę", "ę")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ø", "Ø")
dados_fifa$player <- str_replace_all(dados_fifa$player, "î", "î")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ń", "ń")
dados_fifa$player <- str_replace_all(dados_fifa$player, "İ", "İ")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ć", "Ć")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ř", "ř")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Č", "Č")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "à")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ě", "ě")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ł", "Ł")
dados_fifa$player <- str_replace_all(dados_fifa$player, "à²", "ò")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ź", "ź")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ś", "ś")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ž", "Ž")
dados_fifa$player <- str_replace_all(dados_fifa$player, "à€", "À")
dados_fifa$player <- str_replace_all(dados_fifa$player, "à¨", "è")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ş", "Ş")
dados_fifa$player <- str_replace_all(dados_fifa$player, "à½", "ý")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ț", "Ț")

Nomes dos times: O mesmo foi necessário com o nome dos clubes, para evitar erros.

# Correção dos acentos times
dados_fifa$club <- str_replace_all(dados_fifa$club, "á", "á")
dados_fifa$club <- str_replace_all(dados_fifa$club, "é", "é")
dados_fifa$club <- str_replace_all(dados_fifa$club, "í", "í")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ó", "ó")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ú", "ú")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ä", "ä")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ë", "ë")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ï", "ï")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ö", "ö")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ü", "ü")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ğ", "ğ")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ã", "ã")
dados_fifa$club <- str_replace_all(dados_fifa$club, "æ", "æ")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ą", "ą")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ø", "ø")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Á", "Á")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ć", "ć")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å ", "Š")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å¡", "š")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã¥", "å")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ö", "Ö")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ñ", "ñ")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ș", "Ș")
dados_fifa$club <- str_replace_all(dados_fifa$club, "â", "â")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ț", "ț")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ó", "Ó")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ă", "ă")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ș", "ș")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ç", "Ç")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ı", "ı")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ç", "ç")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ð", "ð")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ß", "ß")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ž", "ž")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ş", "ş")
dados_fifa$club <- str_replace_all(dados_fifa$club, "č", "č")
dados_fifa$club <- str_replace_all(dados_fifa$club, "É", "É")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ô", "ô")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ł", "ł")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ę", "ę")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ø", "Ø")
dados_fifa$club <- str_replace_all(dados_fifa$club, "î", "î")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ń", "ń")
dados_fifa$club <- str_replace_all(dados_fifa$club, "İ", "İ")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ć", "Ć")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ř", "ř")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Č", "Č")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "à")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ě", "ě")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ł", "Ł")
dados_fifa$club <- str_replace_all(dados_fifa$club, "à²", "ò")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ź", "ź")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ś", "ś")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ž", "Ž")
dados_fifa$club <- str_replace_all(dados_fifa$club, "à€", "À")
dados_fifa$club <- str_replace_all(dados_fifa$club, "à¨", "è")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ş", "Ş")
dados_fifa$club <- str_replace_all(dados_fifa$club, "à½", "ý")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ț", "Ț")

Alturas e pesos no formato brasileiro

Passando as alturas e pesos pro formato brasileiro: Foi necessário formatar as alturas (anteriormente em cm) e os pesos (sem representação de kg), para o padrão brasileiro, facilitando o estudo.

# Formatacao das alturas para metros e com ponto

# Converter altura para metros e centímetros
dados_fifa$altura_m <- dados_fifa$height / 100

# Formatar altura como "1.92m"
dados_fifa$altura_m <- sprintf("%.2f m", dados_fifa$altura_m)

# Formatar peso como "87 kg"
dados_fifa$peso_kg <- sprintf("%.0f kg", dados_fifa$weight)

Removendo jogadores duplicados

Jogadores aparecendo 2 vezes na tabela: Alguns jogadores estavam com seus stats replicados, foi necessário remover essas ocorrências.

# Remover duplicatas com base na coluna "player"
dados_fifa <- dados_fifa %>%
  distinct(player, .keep_all = TRUE)

Criação de novas colunas e tabelas

Juntar os stats para escolher os melhores jogadores ou goleiros, com a junção de vários stats, tiramos uma média para jogadores em 5 novas colunas: Ofensivo, Habilidade, Movimentação, Força e Mentalidade.

Com esses stats, poderemos posteriormente filtrar para criar qualquer tabela com jogadores…

# Calcular as médias para cada categoria e arredondar para inteiros
dados_fifa$ofensivo <- round(rowMeans(dados_fifa[, c("crossing", "finishing", "heading", "short_pass", "volleys")]))
dados_fifa$habilidade <- round(rowMeans(dados_fifa[, c("dribbling", "curve", "fk_acc", "long_pass", "ball_control")]))
dados_fifa$movimentacao <- round(rowMeans(dados_fifa[, c("acceleration", "sprint_speed", "agility", "reactions", "balance")]))
dados_fifa$forca <- round(rowMeans(dados_fifa[, c("shot_power", "jumping", "stamina", "strength", "long_shots")]))
dados_fifa$mentalidade <- round(rowMeans(dados_fifa[, c("aggression", "interceptions", "att_position", "vision", "penalties", "composure")]))

Já para os goleiros, o ideal foi criar uma nova tabela apenas com os goleiros, para definir os melhores, os stats definidos foram Elasticidade, Manejo, Chute, Posicionamento e Reflexos:

# Filtrar jogadores com atributos de goleiro, para encontrar os goleiros
goleiros <- dados_fifa %>%
  filter(gk_diving >= 50, gk_handling >= 50, gk_positioning >= 50, gk_kicking >= 50, gk_reflexes >= 50)

# Criar colunas com os tats de goleiro e arredondar para inteiros
goleiros$elasticidade_gl <- round(rowMeans(goleiros[, c("gk_diving")]))
goleiros$manejo_gl <- round(rowMeans(goleiros[, c("gk_handling")]))
goleiros$chute_gl <- round(rowMeans(goleiros[, c("gk_kicking")]))
goleiros$posicionamento_gl <- round(rowMeans(goleiros[, c("gk_positioning")]))
goleiros$reflexos_gl <- round(rowMeans(goleiros[, c("gk_reflexes")]))

Estudo nos jogadores (Resultados)

Agora com todos os dados formatados, podemos pegar os jogadores que desejamos analisar.

Como gerar as tabelas

Com o código abaixo, podemos filtrar os jogadores com base em stats, para definirmos uma régua:

# Selecionar apenas as colunas desejadas
colunas_desejadas <- c("player", "country", "club", "age","altura_m", "peso_kg","ofensivo", "habilidade", "movimentacao", "forca", "mentalidade", "value")

# Filtrar jogadores com médias para os jogadores que desejamos
jogadores_desejados <- dados_fifa %>%
  filter(
    ofensivo > 50,     # Alterar com base no tipo de jogador desejado
    habilidade > 50,   # Alterar com base no tipo de jogador desejado
    movimentacao > 50, # Alterar com base no tipo de jogador desejado
    forca > 50,        # Alterar com base no tipo de jogador desejado
    mentalidade > 50   # Alterar com base no tipo de jogador desejado
  ) %>%
  arrange(desc(value))

# Criar a tabela estática usando kable
kable(jogadores_desejados[colunas_desejadas])

Melhores goleiros

Os melhores goleiros do EA FC 24: com os stats de goleiro, foram filtrados os melhores com base em algumas médias e assim podemos ter em ordem decrescente, os melhores goleiros do jogo.

Alguns usuários podem preferir goleiros mais altos, ou que tenham melhores reflexos, e é possível fazer essa análise a partir de uma tabela como esta:

player country club age altura_m peso_kg elasticidade_gl manejo_gl chute_gl posicionamento_gl reflexos_gl value
Keylor Navas Costa Rica Nott’m Forest 36 1.85 m 80 kg 87 84 75 87 87 $9.000.000
Gianluigi Donnarumma Italy Paris SG 24 1.96 m 90 kg 90 83 79 85 89 $78.000.000
Kasper Schmeichel Denmark OGC Nice 36 1.89 m 89 kg 79 78 79 81 83 $3.400.000
Yassine Bounou Morocco Sevilla FC 32 1.95 m 78 kg 83 83 78 84 85 $28.500.000
Koen Casteels Belgium VfL Wolfsburg 31 1.97 m 86 kg 84 82 79 84 86 $28.000.000
Lucas Mantela Brazil Brazil 23 1.83 m 77 kg 79 87 85 77 81 $27.000.000
Alejandro Remiro Gargallo Spain Real Sociedad 28 1.92 m 79 kg 83 76 79 85 84 $23.500.000
Gerónimo Rulli Argentina Ajax 31 1.89 m 84 kg 82 79 80 81 83 $20.500.000
Dominik Livaković Croatia Dinamo Zagreb 28 1.87 m 79 kg 80 76 71 79 87 $20.000.000
Anthony Lopes Portugal OL 32 1.84 m 81 kg 84 78 71 80 86 $16.000.000
Rui Silva Portugal Real Betis 29 1.91 m 91 kg 80 77 77 81 83 $15.000.000
Walter Benítez Argentina PSV 30 1.91 m 93 kg 80 79 72 80 83 $14.500.000
José Sá Portugal Wolves 30 1.92 m 84 kg 81 78 73 78 82 $14.500.000
Uğurcan Çakır Turkey Trabzonspor 27 1.91 m 82 kg 80 76 74 81 79 $14.000.000
Bernd Leno Germany Fulham 31 1.90 m 83 kg 81 78 74 79 83 $14.000.000
Neto Brazil AFC Bournemouth 34 1.90 m 84 kg 80 78 77 78 79 $10.500.000
Ivan Provedel Italy Latium 29 1.92 m 84 kg 81 76 76 76 81 $10.000.000
Alessio Cragno Italy Monza 29 1.84 m 78 kg 79 78 72 76 79 $10.000.000

Conseguimos obter esses jogadores através do seguinte filtro:

# Filtrar goleiros com médias para BONS goleiros
jogadores_desejados <- goleiros %>%
  filter(
    elasticidade_gl > 77,
    manejo_gl > 75,
    chute_gl > 70,
    posicionamento_gl > 75,
    reflexos_gl > 75
  ) %>%
  arrange(desc(value))

Melhores atacantes

Os melhores atacantes do EA FC 24: com os stats geral para jogadores, a partir de algumas médias, foi possível filtrar os melhores atacantes do game, com base em seus atributos.

Existem diversos estilo de jogo, jogadores mais rápidos como: Messi, Mbappé, Rashford e Ben Yedder agradam usuários que optam por esse estilo.

Porém alguns usuários preferem jogadores mais altos e fortes, como: Gakpo, Cristiano Ronaldo e Haaland, tabelas como a abaixo, podem trazer os jogadores que mais se encaixam em seu estilo de jogo:

player country club age altura_m peso_kg ofensivo habilidade movimentacao forca mentalidade value
Mohamed Salah Egypt Liverpool 31 1.75 m 71 kg 80 81 90 80 78 $99.500.000
Neymar Jr Brazil Paris SG 31 1.75 m 68 kg 80 89 87 71 77 $99.500.000
Lautaro Martínez Argentina Inter 26 1.74 m 72 kg 79 75 86 82 77 $79.500.000
Lionel Messi Argentina Paris SG 36 1.69 m 67 kg 85 93 88 77 74 $54.000.000
Leroy Sané Germany FC Bayern München 27 1.83 m 80 kg 80 82 86 73 69 $46.000.000
Antoine Griezmann France Atlético de Madrid 32 1.76 m 73 kg 84 85 83 82 79 $45.500.000
Domenico Berardi Italy Sassuolo 29 1.83 m 72 kg 77 81 85 73 72 $45.000.000
João Félix Portugal Chelsea 23 1.81 m 72 kg 78 80 83 75 72 $43.500.000
Cody Gakpo Netherlands Liverpool 24 1.89 m 76 kg 76 78 81 79 68 $42.000.000
Marcus Rashford England Manchester Utd 25 1.86 m 70 kg 76 80 83 79 72 $42.000.000
Ángel Correa Argentina Atlético de Madrid 28 1.71 m 70 kg 78 78 87 75 74 $39.500.000
Ferran Torres Spain FC Barcelona 23 1.84 m 77 kg 78 76 82 74 69 $36.000.000
Wissam Ben Yedder France AS Monaco 33 1.70 m 68 kg 81 80 86 75 74 $35.500.000
Ronaldo Cabrais Brazil Brazil 31 1.77 m 75 kg 76 83 84 77 71 $35.000.000
Eden Hazard Belgium Real Madrid 32 1.75 m 74 kg 76 83 82 70 72 $30.000.000
Iago Aspas Spain RC Celta 36 1.76 m 67 kg 82 82 81 71 73 $26.000.000
Luis Muriel Colombia Bergamo Calcio 32 1.79 m 79 kg 76 77 86 74 66 $25.500.000
Henrikh Mkhitaryan Armenia Inter 34 1.77 m 75 kg 76 77 83 75 75 $16.000.000
Kylian Mbappé France Paris SG 24 1.82 m 73 kg 82 81 92 82 75 $153.500.000
Sadio Mané Senegal FC Bayern München 31 1.74 m 69 kg 81 77 90 81 74 $101.000.000

Conseguimos obter esses jogadores através do seguinte filtro:

# Filtrar jogadores com médias para BONS atacantes
jogadores_desejados <- dados_fifa %>%
  filter(
    ofensivo > 75,
    habilidade > 70,
    movimentacao > 80,
    forca > 65,
    mentalidade > 60
  ) %>%
  arrange(desc(value))

Atacantes Brasileiros

Os melhores atacantes brasileiros do EA FC 24: Filtrando apenas os jogadores que possuem stats bons para atacantes.

Com isso, temos os melhores atacantes brasileiros do jogo, certo? Não! O Renan Lodi aparece em 9º nesta análise, apesar de ser Lateral Esquerdo (LE), ou seja, os stats não descrevem diretamente o que EXATAMENTE um jogador poderá realizar dentro do jogo, por isso as características são tão importantes!

Renan Lodi (OM)
Renan Lodi (OM)

Tabela gerada:

player country club age altura_m peso_kg ofensivo habilidade movimentacao forca mentalidade value
Neymar Jr Brazil Paris SG 31 1.75 m 68 kg 80 89 87 71 77 $99.500.000
Antony Brazil Manchester Utd 23 1.72 m 63 kg 68 79 85 70 72 $36.000.000
Ronaldo Cabrais Brazil Brazil 31 1.77 m 75 kg 76 83 84 77 71 $35.000.000
Rodrygo Brazil Real Madrid 22 1.74 m 64 kg 72 77 85 71 65 $30.500.000
Gabriel Martinelli Brazil Arsenal 22 1.78 m 75 kg 74 72 84 68 68 $25.000.000
Adryan Zonta Brazil Brazil 31 1.72 m 68 kg 70 71 85 77 69 $22.000.000
Luimo Boas Santos Brazil Brazil 23 1.76 m 73 kg 70 72 81 77 61 $21.000.000
Fred Brazil Manchester Utd 30 1.69 m 62 kg 67 78 83 75 76 $20.500.000
Renan Lodi Brazil Nott’m Forest 25 1.73 m 68 kg 70 73 81 74 71 $18.500.000
Romarinho Brazil Al Ittihad 32 1.74 m 69 kg 71 73 85 74 63 $12.000.000

Conseguimos obter esses jogadores através do seguinte filtro:

# Colocar apenas jogadores brasileiros
atacantes_br <- dados_fifa %>% filter(country == "Brazil")

# Filtrar jogadores com médias para BONS atacantes
jogadores_desejados <- atacantes_br %>%
  filter(
    ofensivo > 65,
    habilidade > 70,
    movimentacao > 78,
    forca > 65,
    mentalidade > 60
  ) %>%
  arrange(desc(value))

Melhores do mundo

Distribuição em cada categoria: para analisar a quantidade de jogadores extremamente bons, foi gerado um gráfico das porcentagens de jogadores em cada categoria de stats acima de 70:

Com essa análise, podemos observar que existem vários jogadores com bons números de movimentação, mas os atributos ofensivo, mentalidade e habilidade são uma parcela baixa de jogadores, o que os encaixa na pouca quantidade de jogadores que são considerados os melhores do mundo, os que podem ser encaixados nas 3 categorias acima de 70.

O gráfico foi gerado com o seguinte filtro:

# Calcular as porcentagens de jogadores com stats acima de 70 para diferentes atributos
porcentagens <- dados_fifa %>%
  summarise(
    ofensivo = mean(ofensivo > 70),
    habilidade = mean(habilidade > 70),
    movimentacao = mean(movimentacao > 70),
    forca = mean(forca > 70),
    mentalidade = mean(mentalidade > 70)
  ) %>%
  gather(key = "atributo", value = "porcentagem")

Defensores por altura

Divisão por faixa de altura: podemos extrair os melhores defensores baseado em stats, pegando apenas os jogadores com: força maior ou igual a 70, mentalidade maior ou igual a 65, movimentação maior ou igual a 75 e separá-los por altura:

Com essa análise, podemos observar que existem pouquíssimos jogadores com bons números de força, mentalidade, movimentação maiores que 1,85m, que seriam ótimos zagueiros. Por se aproveitarem da altura e ainda assim conseguiriam ser rápidos para defender diversos setores do campo.

O gráfico foi gerado com o seguinte filtro:

# Filtrar os dados
jogadores_filtrados <- dados_fifa %>%
  filter(forca >= 70, mentalidade >= 65, movimentacao >= 75,
         height >= 150 & height < 176 |
         height >= 176 & height < 186 |
         height >= 186)

# Definir faixas de altura em metros
faixas_altura <- c("1.50 - 1.75 m", "1.76 - 1.85 m", "Maior que 1.85 m")

# Contar o número de jogadores em cada categoria de altura
contagem_altura <- jogadores_filtrados %>%
  mutate(categoria_altura = cut(height, breaks = c(150, 176, 186, Inf),
                                labels = faixas_altura)) %>%
  group_by(categoria_altura) %>%
  summarise(total_jogadores = n())

Elasticidade dos goleiros

Podemos relacionar a elasticidade dos goleiros: com essas informações podemos análisar a relação que demonstra que jogadores mais velhos possuem normalmente menos elasticidade já em jogadores mais novos essa amostra de jogadores com boa elasticidade é bem maior.

O gráfico foi gerado com o seguinte filtro:

# Filtrar os goleiros com elasticidade_gl > 60
goleiros_elasticos <- goleiros %>%
  filter(elasticidade_gl > 60)

# Criar o gráfico de dispersão
ggplot(goleiros_elasticos, aes(x = age, y = elasticidade_gl)) +
  geom_point(color = "blue") +
  labs(title = "Elasticidade dos Goleiros em Relacao a Idade",
       x = "Idade",
       y = "Elasticidade Goalkeeper") +
  scale_x_continuous(breaks = seq(min(goleiros_elasticos$age), max(goleiros_elasticos$age), by = 1))

Jogadores por país

Podemos exibir a porcentagem de jogadores nascidos no mesmo país: com essas informações podemos análisar a nacionalidade dos jogadores podendo assim melhorar o entrosamento dos times montados, tendo abaixo o top 10 de países com mais jogadores.

O gráfico foi gerado com o seguinte filtro:

# Contar o número de jogadores por país
contagem_pais <- dados_fifa %>%
  count(country) %>%
  arrange(desc(n)) %>%
  top_n(10)

# Calcular as porcentagens
contagem_pais <- contagem_pais %>%
  mutate(percent = n / sum(n) * 100)

# Definir um vetor de cores com 10 para os países
cores <- c("lightblue2", "green2", "lightgray", "blue2", "red4", "red1", "orange1", "pink", "yellow", "purple3")

# Criar o gráfico de pizza com porcentagens e cores alteradas
ggplot(contagem_pais, aes(x = "", y = n, fill = country)) +
  geom_bar(stat = "identity") +
  coord_polar("y", start = 0) +
  labs(title = "Distribuicao dos Jogadores por Pais",
       fill = "Pais") +
  theme_void() +
  geom_text(aes(label = paste0(round(percent), "%")), position = position_stack(vjust = 0.5)) +
  scale_fill_manual(values = cores)  # Define as cores usando o vetor cores

Conclusão

Conclusão do estudo

Após os exemplos apresentados, fica evidente que é viável extrair informações relevantes sobre os jogadores e exibi-las em tabelas e gráficos, embora ainda existam exceções e detalhes que requerem testes dentro do jogo para entender como cada estatística influencia sua performance.

A determinação dos melhores jogadores não pode ser baseada exclusivamente em estatísticas, pois cada usuário possui um estilo de jogo único e suas preferências individuais influenciam na escolha dos jogadores, seja por sua velocidade, força, altura ou outras características.

Quais usuários devem se interessar por esse estudo?

Principalmente proplayers de EA FC 24 podem analisar os jogadores para escolher os que se encaixam melhor no seu estilo e como podem melhorar seu desempenho dentro do jogo. Usuários casuais podem analisar para suas carreiras e times competitivos, escolhendo também opções para se adaptar ao seu estilo.

Como os usuários podem utilizar esse estudo?

Com os filtros disponíveis, os usuários podem selecionar jogadores com características que se alinham ao seu estilo de jogo e montar times mais eficientes. No entanto, é importante ressaltar que testes práticos dentro do jogo são necessários para validar a performance dos jogadores selecionados.

Esta abordagem permite aos usuários tomar decisões mais informadas ao montar suas equipes, considerando não apenas estatísticas, mas também suas próprias preferências e experiências pessoais no jogo.