Resumen

GitHub: adsoncostanzifilho/CSGo

El paquete CSGo es un cliente de R para acceder a la API REST de Steam, específicamente para los datos del juego Counter-Strike Global Offensive (CS Go). Consulta el sitio web de documentación de Steam y la Página del Paquete para más información.

Instalación

Para obtener la versión actual publicada desde CRAN:

install.packages("CSGo")

Para obtener la versión de desarrollo actual desde GitHub:

# install.packages("devtools")
devtools::install_github("adsoncostanzifilho/CSGo")

Ejemplo

El primer paso para usar el paquete CSGo es tener tus propias credenciales (API key) para obtener los datos de CSGo desde la API de Steam. Para más información sobre cómo obtener tu propia API Key, ejecuta en tu R vignette("auth", package = "CSGo"), o haz clic aquí.

Ahora que ya tienes tu API Key, deberías poder recolectar tus propios datos de CSGo, así como los datos de tus amigos. ¡Espero que a mi amigo Rodrigo no le importe que juguemos con sus datos (él es el ‘76561198263364899’)!

Primero recolectemos sus estadísticas de CSGo:

library(CSGo)

# to get the statistics of the user 76561198263364899
rodrigo_stats <- get_stats_user(api_key = 'your_key', user_id = '76561198263364899')

Filtremos el data frame obtenido por “kills” y “weapon” para crear un análisis de muertes por tipo de arma.

library(dplyr)
library(stringr)

rodrigo_weapon_kill <- rodrigo_stats %>%
  filter(
    str_detect(name, 'kill'),
    type == ' weapon info'
  ) %>%
  arrange(desc(value))

¡Ahora echemos un vistazo al gráfico!

PD: Para hacer el gráfico aún más bonito, recomiendo obtener la fuente “Quantico” de Google fonts usando el paquete showtext!

library(ggplot2)
library(showtext)

## Loading Google fonts (https://fonts.google.com/)
font_add_google("Quantico", "quantico")

rodrigo_weapon_kill %>%
  top_n(n = 10, wt = value) %>%
  ggplot(aes(x = name_match, y = value, fill = name_match)) +
  geom_col() +
  ggtitle("KILLS BY WEAPON") +
  ylab("Number of Kills") +
  xlab("") +
  labs(fill = "Weapon Name") +
  theme_csgo(text = element_text(family = "quantico")) +
  scale_fill_csgo()

Entonces, estas son las 10 mejores armas por muertes, pero… ¿Qué pasa con la eficiencia? ¿Es la ak47 el arma más eficiente de Rodrigo? Primero, definamos “eficiencia”:

  • kills_efficiency significa cuántos disparos hizo para matar (ej.: el 32% de los disparos matarán)

  • hits_efficiency significa cuántos disparos para dar en el blanco; esto está más relacionado con la habilidad de Rodrigo con cada arma (ej.: el 35% de los disparos darán en el blanco).

  • hits_to_kill significa cuántos impactos son necesarios para matar; esto está más relacionado con el poder/eficiencia del arma (ej.: el 91% de los impactos matarán).

rodrigo_efficiency <- rodrigo_stats %>%
  filter(
    name_match %in% c("ak47", "aug", "awp", "fiveseven",
                      "hkp2000", "m4a1", "mp7", "p90",
                      "sg556", "xm1014")
  ) %>%
  mutate(
    stat_type = case_when(
      str_detect(name, "shots") ~ "shots",
      str_detect(name, "hits") ~ "hits",
      str_detect(name, "kills") ~ "kills"
    )
  ) %>% 
  pivot_wider(
    names_from = stat_type, 
    id_cols = name_match, 
    values_from = value
  ) %>%
  mutate(
    kills_efficiency = kills/shots*100,
    hits_efficiency = hits/shots*100,
    hits_to_kill = kills/hits*100
  )

kbl(rodrigo_efficiency) %>%
  kable_styling()
name_match kills shots hits kills_efficiency hits_efficiency hits_to_kill
fiveseven 1288 28187 5558 4.569482 19.71831 23.17380
xm1014 5611 205982 42541 2.724024 20.65278 13.18963
p90 3469 133273 20245 2.602928 15.19062 17.13510
awp 2051 6260 2235 32.763578 35.70288 91.76734
ak47 6969 154852 24823 4.500426 16.03014 28.07477
aug 2120 37949 8487 5.586445 22.36423 24.97938
hkp2000 1401 36975 6737 3.789047 18.22042 20.79561
sg556 1243 25091 4567 4.953968 18.20175 27.21699
mp7 1788 52657 10186 3.395560 19.34406 17.55350
m4a1 3526 81126 14687 4.346325 18.10394 24.00763
rodrigo_efficiency %>%
  top_n(n = 10, wt = kills) %>%
  ggplot(aes(x = name_match, size = shots)) +
  geom_point(aes(y = kills_efficiency, color = "Kills Efficiency")) +
  geom_point(aes(y = hits_efficiency, color = "Hits Efficiency")) +
  geom_point(aes(y = hits_to_kill, color = "Hits to Kill")) +
  ggtitle("WEAPON EFFICIENCY") +
  ylab("Efficiency (%)") +
  xlab("") +
  labs(color = "Efficiency Type", size = "Shots") +
  theme_csgo(
    text = element_text(family = "quantico"),
    panel.grid.major.x = element_line(size = .1, color = "black",linetype = 2)
  ) +
  scale_color_csgo()
En conclusión, le aconsejaría a Rodrigo usar la **awp** en sus próximas partidas, porque esta arma presentó la mejor eficiencia en términos de **disparos para matar**, **disparos para dar en el blanco** e **impactos para matar**. Pero definitivamente necesitamos más disparos con esta arma para ver si esta eficiencia se mantiene.. jajajaja