NOTA DE LOS AUTORES

Este trabajo es la culminación del semestre de la materia de matemáticas I de la Facultad de Economía, es importante recordar que muchos de nosotros no teníamos un conocimiento previo de R, pero esta modalidad a distancia permitió que aprendiéramos de manera conjunta, las herramientas y la teoría.

Me refiero como herramienta a R ya que es auxiliar y complementaria.

Lo más importante (o interesante) es que una vez estando trabajando, la imaginación despierta y podemos interactuar de manera más positiva en el complejo manejo de los distintos lenguajes de programación.

Te invitamos a descubrir los resultados.

Primero tenemos que instalar las siguientes paqueterias que nos ayudarán a extraer datos y demás funciones posteriores.

library(dplyr) library(magrittr) library(knitr) library(ggplot2) library(rvest) library(tidyr) library(ggmap)

Ya instaladas proseguimos con los siguientes pasos:

I.Analizamos los resultados de los pilotos de F1 durante la temporada 2020

# Importamos los resultados de la temporada 2020 de la F1 ----------------

# Echamos un vistazo a las estadisticas en el siguiente enlace
browseURL('https://www.formel1.de/rennergebnisse/wm-stand/2020/fahrerwertung')

# Fijamos los contenidos de la tabla HTML dentro de la variable f1
f1 <- read_html('https://www.formel1.de/rennergebnisse/wm-stand/2020/fahrerwertung') %>% 
  html_node('table') %>% 
  html_table()
# Mostramos nuestros datos
f1
##    Pos.             Fahrer Pkt.                                                
## 1     1     Lewis Hamilton  347 12 25 26 25 19 25 25  7 26 15 25 26 26 25 25  -
## 2     2    Valtteri Bottas  223 25 18 15  - 15 16 18 10 18 26  - 18 18  -  4  4
## 3     3     Max Verstappen  214  - 15 18 19 25 18 15  -  - 18 19 15  -  8 19  -
## 4     4       Sergio Perez  125  8  8  6  -  - 10  1  1 10 12 12  6  8 18  - 25
## 5     5   Daniel Ricciardo  119  -  4  4 12  -  - 13  8 12 10 15  2 15  1  6 10
## 6     6       Carlos Sainz  105 10  3  2  -  -  8  - 18  -  - 10  8  6 10 10 12
## 7     7    Alexander Albon  105  - 12 10  4 10  4  8  - 15  1  -  -  -  6 15  8
## 8     8    Charles Leclerc   98 18  -  - 15 12  -  -  -  4  8  6 12 10 12  1  -
## 9     9       Lando Norris   97 16 10  - 10  2  1  6 12  8  -  -  -  4  5 12  1
## 10   10       Pierre Gasly   75  6  -  -  6  -  2  4 25  -  2  8 10  -  -  8  -
## 11   11       Lance Stroll   75  -  6 12  2  8 12  2 15  -  -  -  -  -  2  - 15
## 12   12       Esteban Ocon   62  4  -  -  8  4  - 10  4  -  6  -  4  -  -  2 18
## 13   13   Sebastian Vettel   33  1  -  8  1  -  6  -  -  1  -  -  1  - 15  -  -
## 14   14       Daniil Kwjat   32  -  1  -  -  1  -  -  2  6  4  -  - 12  -  -  6
## 15   15    Nico Hülkenberg   10  -  -  -  -  6  -  -  -  -  -  4  -  -  -  -  -
## 16   16     Kimi Räikkönen    4  -  -  -  -  -  -  -  -  2  -  -  -  2  -  -  -
## 17   17 Antonio Giovinazzi    4  2  -  -  -  -  -  -  -  -  -  1  -  1  -  -  -
## 18   18     George Russell    3  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  3
## 19   19    Romain Grosjean    2  -  -  -  -  -  -  -  -  -  -  2  -  -  -  -  -
## 20   20    Kevin Magnussen    1  -  -  1  -  -  -  -  -  -  -  -  -  -  -  -  -
## 21   21    Nicholas Latifi    -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
## 22   22        Jack Aitken    -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
## 23   23  Pietro Fittipaldi    -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
##      
## 1  15
## 2  18
## 3  25
## 4   -
## 5   7
## 6   8
## 7  12
## 8   -
## 9  10
## 10  4
## 11  1
## 12  2
## 13  -
## 14  -
## 15  -
## 16  -
## 17  -
## 18  -
## 19  -
## 20  -
## 21  -
## 22  -
## 23  -

II.Procedemos a limpiar la información y clasificarla de manera concisa

# Transformamos y limpiamos la información de los pilotos -----------------------------------------------
# Añadimos los titulos de las columnas restantes

colnames(f1) <- c('Pos', 'Piloto', 'Total', sprintf('R%02d', 1:17))

# Convertimos a un "tibble data frame" y filtramos a los 8 mejores pilotos

f1 <- as_tibble(f1) %>% 
  filter(as.integer(Pos) <= 9)

# Convertimos a Piloto en una variable factorial, reemplazamos todos los '-' con ceros, convertimos a formato largo

f1$Piloto <- as.factor(f1$Piloto)
f1[, -2] <- apply(f1[, -2], 2, function(x) as.integer(gsub('-', '0', as.character(x))))
f1long <- gather(f1, Carrera, Puntos, R01:R17)
# Y así se ve mejor
f1long
## # A tibble: 153 x 5
##      Pos Piloto           Total Carrera Puntos
##    <int> <fct>            <int> <chr>    <int>
##  1     1 Lewis Hamilton     347 R01         12
##  2     2 Valtteri Bottas    223 R01         25
##  3     3 Max Verstappen     214 R01          0
##  4     4 Sergio Perez       125 R01          8
##  5     5 Daniel Ricciardo   119 R01          0
##  6     6 Carlos Sainz       105 R01         10
##  7     7 Alexander Albon    105 R01          0
##  8     8 Charles Leclerc     98 R01         18
##  9     9 Lando Norris        97 R01         16
## 10     1 Lewis Hamilton     347 R02         25
## # … with 143 more rows

III.Graficamos la trayectoria a lo largo de la temporada de los 9 mejores pilotos

# Ahora añadimos algunas graficas ------------------------------------------------------
# '9 pilotos'
ggplot(f1long, aes(x = Carrera, y = Puntos, group = Piloto, colour = Piloto)) + 
  geom_line() +
  scale_x_discrete(breaks=c('R01', 'R04', 'R08', 'R12', 'R17')) +
  labs(title = 'Resultados Fórmula 1 2020, 9 mejores pilotos',
       caption = 'fuente: www.formel1.de')

IV.A continuación, se muestra una gráfica independiente del desempeño de los 9 mejores pilotos

# Grafica para cada piloto
ggplot(f1long, aes(x = Carrera, y = Puntos, group = Piloto, colour = Piloto)) + 
  geom_line(show.legend = FALSE) + facet_wrap(~ Piloto) +
  scale_x_discrete(breaks=c('R01', 'R04', 'R08', 'R12', 'R17')) +
  labs(title = 'Resultados Fórmula 1 2020, 9 mejores pilotos',
       caption = 'fuente: www.formel1.de')

V.Ahora analizamos las estadísticas del campeonato de constructores

# Importamos los resultados del campeonato de constructores 2020 ----------------
# Tomamos nuestra información de la siguiente pagina web
browseURL('https://www.formel1.de/rennergebnisse/wm-stand/2020/konstrukteurswertung')
# Fijamos los contenidos de la tabla HTML dentro de la variable f2
f2 <- read_html('https://www.formel1.de/rennergebnisse/wm-stand/2020/konstrukteurswertung') %>% 
  html_node('table') %>% 
  html_table()
# Display our data
f2
##    Pos.            Team Pkt.                                                   
## 1     1   Mercedes-Benz  573 37 43 41 25 34 41 43 17 44 41 25 44 44 25 29  7 33
## 2     2 Red Bull Racing  319  - 27 28 23 35 22 23  - 15 19 19 15  - 14 34  8 37
## 3     3         McLaren  202 26 13  2 10  2  9  6 30  8  - 10  8 10 15 22 13 18
## 4     4    Racing Point  195  8 14 18  2 14 22  3 16 10 12 16  6  8 20  - 40  1
## 5     5         Renault  181  4  4  4 20  4  - 23 12 12 16 15  6 15  1  8 28  9
## 6     6         Ferrari  131 19  -  8 16 12  6  -  -  5  8  6 13 10 27  1  -  -
## 7     7      AlphaTauri  107  6  1  -  6  1  2  4 27  6  6  8 10 12  -  8  6  4
## 8     8      Alfa Romeo    8  2  -  -  -  -  -  -  -  2  -  1  -  3  -  -  -  -
## 9     9            Haas    3  -  -  1  -  -  -  -  -  -  -  2  -  -  -  -  -  -
## 10   10        Williams    -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

VI.Analizamos los datos del campeonato de constructores

# Transformamos y limpiamos la informacion de las escuderias -----------------------------------------------
# Añadimos los titulos de las columnas restantes
colnames(f2) <- c('Pos', 'Escuderia', 'Total', sprintf('R%02d', 1:17))
# Convertimos a un "tibble data frame" y filtramos a las 9 mejores escuderias
f1 <- as_tibble(f2) %>% 
  filter(as.integer(Pos) <= 9)
# Convertimos a Escuderia en una variable factorial, reemplazamos todos los '-' con ceros, convertimos a formato largo
f2$Escuderia <- as.factor(f2$Escuderia)
f2[, -2] <- apply(f2[, -2], 2, function(x) as.integer(gsub('-', '0', as.character(x))))
f2long <- gather(f2, Carrera, Puntos, R01:R17)
# Y así se ve mejor
f2long
##     Pos       Escuderia Total Carrera Puntos
## 1     1   Mercedes-Benz   573     R01     37
## 2     2 Red Bull Racing   319     R01      0
## 3     3         McLaren   202     R01     26
## 4     4    Racing Point   195     R01      8
## 5     5         Renault   181     R01      4
## 6     6         Ferrari   131     R01     19
## 7     7      AlphaTauri   107     R01      6
## 8     8      Alfa Romeo     8     R01      2
## 9     9            Haas     3     R01      0
## 10   10        Williams     0     R01      0
## 11    1   Mercedes-Benz   573     R02     43
## 12    2 Red Bull Racing   319     R02     27
## 13    3         McLaren   202     R02     13
## 14    4    Racing Point   195     R02     14
## 15    5         Renault   181     R02      4
## 16    6         Ferrari   131     R02      0
## 17    7      AlphaTauri   107     R02      1
## 18    8      Alfa Romeo     8     R02      0
## 19    9            Haas     3     R02      0
## 20   10        Williams     0     R02      0
## 21    1   Mercedes-Benz   573     R03     41
## 22    2 Red Bull Racing   319     R03     28
## 23    3         McLaren   202     R03      2
## 24    4    Racing Point   195     R03     18
## 25    5         Renault   181     R03      4
## 26    6         Ferrari   131     R03      8
## 27    7      AlphaTauri   107     R03      0
## 28    8      Alfa Romeo     8     R03      0
## 29    9            Haas     3     R03      1
## 30   10        Williams     0     R03      0
## 31    1   Mercedes-Benz   573     R04     25
## 32    2 Red Bull Racing   319     R04     23
## 33    3         McLaren   202     R04     10
## 34    4    Racing Point   195     R04      2
## 35    5         Renault   181     R04     20
## 36    6         Ferrari   131     R04     16
## 37    7      AlphaTauri   107     R04      6
## 38    8      Alfa Romeo     8     R04      0
## 39    9            Haas     3     R04      0
## 40   10        Williams     0     R04      0
## 41    1   Mercedes-Benz   573     R05     34
## 42    2 Red Bull Racing   319     R05     35
## 43    3         McLaren   202     R05      2
## 44    4    Racing Point   195     R05     14
## 45    5         Renault   181     R05      4
## 46    6         Ferrari   131     R05     12
## 47    7      AlphaTauri   107     R05      1
## 48    8      Alfa Romeo     8     R05      0
## 49    9            Haas     3     R05      0
## 50   10        Williams     0     R05      0
## 51    1   Mercedes-Benz   573     R06     41
## 52    2 Red Bull Racing   319     R06     22
## 53    3         McLaren   202     R06      9
## 54    4    Racing Point   195     R06     22
## 55    5         Renault   181     R06      0
## 56    6         Ferrari   131     R06      6
## 57    7      AlphaTauri   107     R06      2
## 58    8      Alfa Romeo     8     R06      0
## 59    9            Haas     3     R06      0
## 60   10        Williams     0     R06      0
## 61    1   Mercedes-Benz   573     R07     43
## 62    2 Red Bull Racing   319     R07     23
## 63    3         McLaren   202     R07      6
## 64    4    Racing Point   195     R07      3
## 65    5         Renault   181     R07     23
## 66    6         Ferrari   131     R07      0
## 67    7      AlphaTauri   107     R07      4
## 68    8      Alfa Romeo     8     R07      0
## 69    9            Haas     3     R07      0
## 70   10        Williams     0     R07      0
## 71    1   Mercedes-Benz   573     R08     17
## 72    2 Red Bull Racing   319     R08      0
## 73    3         McLaren   202     R08     30
## 74    4    Racing Point   195     R08     16
## 75    5         Renault   181     R08     12
## 76    6         Ferrari   131     R08      0
## 77    7      AlphaTauri   107     R08     27
## 78    8      Alfa Romeo     8     R08      0
## 79    9            Haas     3     R08      0
## 80   10        Williams     0     R08      0
## 81    1   Mercedes-Benz   573     R09     44
## 82    2 Red Bull Racing   319     R09     15
## 83    3         McLaren   202     R09      8
## 84    4    Racing Point   195     R09     10
## 85    5         Renault   181     R09     12
## 86    6         Ferrari   131     R09      5
## 87    7      AlphaTauri   107     R09      6
## 88    8      Alfa Romeo     8     R09      2
## 89    9            Haas     3     R09      0
## 90   10        Williams     0     R09      0
## 91    1   Mercedes-Benz   573     R10     41
## 92    2 Red Bull Racing   319     R10     19
## 93    3         McLaren   202     R10      0
## 94    4    Racing Point   195     R10     12
## 95    5         Renault   181     R10     16
## 96    6         Ferrari   131     R10      8
## 97    7      AlphaTauri   107     R10      6
## 98    8      Alfa Romeo     8     R10      0
## 99    9            Haas     3     R10      0
## 100  10        Williams     0     R10      0
## 101   1   Mercedes-Benz   573     R11     25
## 102   2 Red Bull Racing   319     R11     19
## 103   3         McLaren   202     R11     10
## 104   4    Racing Point   195     R11     16
## 105   5         Renault   181     R11     15
## 106   6         Ferrari   131     R11      6
## 107   7      AlphaTauri   107     R11      8
## 108   8      Alfa Romeo     8     R11      1
## 109   9            Haas     3     R11      2
## 110  10        Williams     0     R11      0
## 111   1   Mercedes-Benz   573     R12     44
## 112   2 Red Bull Racing   319     R12     15
## 113   3         McLaren   202     R12      8
## 114   4    Racing Point   195     R12      6
## 115   5         Renault   181     R12      6
## 116   6         Ferrari   131     R12     13
## 117   7      AlphaTauri   107     R12     10
## 118   8      Alfa Romeo     8     R12      0
## 119   9            Haas     3     R12      0
## 120  10        Williams     0     R12      0
## 121   1   Mercedes-Benz   573     R13     44
## 122   2 Red Bull Racing   319     R13      0
## 123   3         McLaren   202     R13     10
## 124   4    Racing Point   195     R13      8
## 125   5         Renault   181     R13     15
## 126   6         Ferrari   131     R13     10
## 127   7      AlphaTauri   107     R13     12
## 128   8      Alfa Romeo     8     R13      3
## 129   9            Haas     3     R13      0
## 130  10        Williams     0     R13      0
## 131   1   Mercedes-Benz   573     R14     25
## 132   2 Red Bull Racing   319     R14     14
## 133   3         McLaren   202     R14     15
## 134   4    Racing Point   195     R14     20
## 135   5         Renault   181     R14      1
## 136   6         Ferrari   131     R14     27
## 137   7      AlphaTauri   107     R14      0
## 138   8      Alfa Romeo     8     R14      0
## 139   9            Haas     3     R14      0
## 140  10        Williams     0     R14      0
## 141   1   Mercedes-Benz   573     R15     29
## 142   2 Red Bull Racing   319     R15     34
## 143   3         McLaren   202     R15     22
## 144   4    Racing Point   195     R15      0
## 145   5         Renault   181     R15      8
## 146   6         Ferrari   131     R15      1
## 147   7      AlphaTauri   107     R15      8
## 148   8      Alfa Romeo     8     R15      0
## 149   9            Haas     3     R15      0
## 150  10        Williams     0     R15      0
## 151   1   Mercedes-Benz   573     R16      7
## 152   2 Red Bull Racing   319     R16      8
## 153   3         McLaren   202     R16     13
## 154   4    Racing Point   195     R16     40
## 155   5         Renault   181     R16     28
## 156   6         Ferrari   131     R16      0
## 157   7      AlphaTauri   107     R16      6
## 158   8      Alfa Romeo     8     R16      0
## 159   9            Haas     3     R16      0
## 160  10        Williams     0     R16      0
## 161   1   Mercedes-Benz   573     R17     33
## 162   2 Red Bull Racing   319     R17     37
## 163   3         McLaren   202     R17     18
## 164   4    Racing Point   195     R17      1
## 165   5         Renault   181     R17      9
## 166   6         Ferrari   131     R17      0
## 167   7      AlphaTauri   107     R17      4
## 168   8      Alfa Romeo     8     R17      0
## 169   9            Haas     3     R17      0
## 170  10        Williams     0     R17      0

VII.Añadimos gráfica global

# Ahora añadimos su grafica respectiva ------------------------------------------------------
# 'TOP 10'
ggplot(f2long, aes(x = Carrera, y = Puntos, group = Escuderia, colour = Escuderia)) + 
  geom_line() +
  scale_x_discrete(breaks=c('R01', 'R04', 'R08', 'R12', 'R17')) +
  labs(title = 'Resultados Fórmula 1 2020, Ranking mejores escuderias',
       caption = 'fuente: www.formel1.de')

VIII.Gráfica para cada escuderia

ggplot(f2long, aes(x = Carrera, y = Puntos, group = Escuderia, colour = Escuderia)) + 
  geom_line(show.legend = FALSE) + facet_wrap(~ Escuderia) +
  scale_x_discrete(breaks=c('R01', 'R04', 'R08', 'R12', 'R17')) +
  labs(title = 'Resultados Fórmula 1 2020, Ranking escuderías',
       caption = 'fuente: www.formel1.de')

IX.A continuación formaremos un vector con cada una de las ubicaciones en donde se desarrollaron las 17 carreras.

Austria<-c(47.2197222,14.7647222)
Hungría<-c(47.5822222,19.2511111)
Inglaterra<-c(52.0786111,-1.0169444)
España<-c(41.5700000,2.2611111)
Bélgica<-c(50.4372222,5.9713888)
ItaliaM<-c(45.6205555,9.2894444)
ItaliaT<-c(43.9975,11.37194)
Rusia<-c(43.40833,39.96556)
Alemania<-c(50.3355555,6.9475)
Portugal<-c(37.2294,-8.63053)
ItaliaER<-c(44.3411111,11.7133333)
Turquía<-c(40.9516666,29.405)
Barein<-c(26.0325,50.5105555)
EAU<-c(24.4702444,54.606075)
sedes<-rbind(Austria,Hungría,Inglaterra,España,Bélgica,ItaliaM,ItaliaT,Rusia,Alemania,Portugal,ItaliaER,Turquía,Barein,EAU)
sedes
##                [,1]      [,2]
## Austria    47.21972 14.764722
## Hungría    47.58222 19.251111
## Inglaterra 52.07861 -1.016944
## España     41.57000  2.261111
## Bélgica    50.43722  5.971389
## ItaliaM    45.62056  9.289444
## ItaliaT    43.99750 11.371940
## Rusia      43.40833 39.965560
## Alemania   50.33556  6.947500
## Portugal   37.22940 -8.630530
## ItaliaER   44.34111 11.713333
## Turquía    40.95167 29.405000
## Barein     26.03250 50.510556
## EAU        24.47024 54.606075
colnames(sedes)<-c("Longitud","Latitud")
sedes
##            Longitud   Latitud
## Austria    47.21972 14.764722
## Hungría    47.58222 19.251111
## Inglaterra 52.07861 -1.016944
## España     41.57000  2.261111
## Bélgica    50.43722  5.971389
## ItaliaM    45.62056  9.289444
## ItaliaT    43.99750 11.371940
## Rusia      43.40833 39.965560
## Alemania   50.33556  6.947500
## Portugal   37.22940 -8.630530
## ItaliaER   44.34111 11.713333
## Turquía    40.95167 29.405000
## Barein     26.03250 50.510556
## EAU        24.47024 54.606075
sedes<-data.frame(sedes)
sedes
##            Longitud   Latitud
## Austria    47.21972 14.764722
## Hungría    47.58222 19.251111
## Inglaterra 52.07861 -1.016944
## España     41.57000  2.261111
## Bélgica    50.43722  5.971389
## ItaliaM    45.62056  9.289444
## ItaliaT    43.99750 11.371940
## Rusia      43.40833 39.965560
## Alemania   50.33556  6.947500
## Portugal   37.22940 -8.630530
## ItaliaER   44.34111 11.713333
## Turquía    40.95167 29.405000
## Barein     26.03250 50.510556
## EAU        24.47024 54.606075

Ubicaciones de los GP de la temporada 2020 de la Fórmula 1.

qmplot(Latitud, Longitud, data=sedes, color=I(rainbow(14)))
## Using zoom = 4...
## Source : http://tile.stamen.com/terrain/4/7/5.png
## Source : http://tile.stamen.com/terrain/4/8/5.png
## Source : http://tile.stamen.com/terrain/4/9/5.png
## Source : http://tile.stamen.com/terrain/4/10/5.png
## Source : http://tile.stamen.com/terrain/4/7/6.png
## Source : http://tile.stamen.com/terrain/4/8/6.png
## Source : http://tile.stamen.com/terrain/4/9/6.png
## Source : http://tile.stamen.com/terrain/4/10/6.png

Material audiovisual