Este documento es un intento de analizar el uso de R en México con los logs de repositorio CRAN. Además, es un ejemplo de un documento generado en R Markdown, que estoy tratando de aprender para mantener documentos que integran texto, datos y figuras.
Porque este análisis requiere descargar muchos archivos y generar tablas muy grandes, voy a incluir el código pero no quiero que se corre otra vez en este documento. Incluyo la opción eval = FALSE en el trozo del código.
load("cran_dls.RData")
library(tidyverse)
library(lubridate)
La primera etapa era descargar los logs de descargos de CRAN. Esta etapa resultó en 25 GB de archivos y no es algo que quiero repetir. El script es del sitio de RStudio.
# Here's an easy way to get all the URLs in R
start <- as.Date("2012-10-01")
today <- as.Date("2019-05-23")
all_days <- seq(start, today, by = "day")
year <- as.POSIXlt(all_days)$year + 1900
urls <- paste0('http://cran-logs.rstudio.com/', year, '/', all_days, '.csv.gz')
# You can then use download.file to download into a directory.
for (i in 1:length(urls)) {
download.file(urls[i], paste0("~/Documents/R/R_examples/cran_logs/", str_sub(urls[i], 35, 44),
".csv.gz"), "libcurl")
}
# If you only want to download the files you don't have, try:
# missing_days <- setdiff(all_days, tools::file_path_sans_ext(dir(), TRUE))
Esta etapa es para filtrar los descargos de México (country == “MX”). Necesitaba unas horas.
newstart <- as.Date("2012-10-01")
newend <- as.Date("2019-05-23")
new_days <- seq(newstart, newend, by = "day")
year <- as.POSIXlt(new_days)$year + 1900
new_urls <- paste0('http://cran-logs.rstudio.com/', year, '/', new_days, '.csv.gz')
cran_mex <- tibble()
for (i in 1:length(new_urls)) {
df <- read_csv(paste0("~/Documents/R/R_examples/cran_logs/",
str_sub(new_urls[i], 35, 44), ".csv.gz"))
cran_mex <- rbind(cran_mex, filter(df, country == "MX"))
}
# agrupado por mes
cran_mex_ym <- cran_mex %>%
mutate(md = as.Date(paste0(year(date), "-", month(date), "-01"))) %>%
group_by(md) %>%
summarise(count = n())
Crear las gráficas
g <- cran_mex %>%
group_by(date) %>%
summarise(count = n()) %>%
ggplot(aes(x = date, y = count)) +
geom_point(color = "blue", alpha = 0.5) +
labs(x = "Fecha", y = "Número de paquetes descargados",
title = "Paquetes descargados de CRAN en México")
g
g_ym <- cran_mex_ym %>%
ggplot(aes(x = md, y = count)) +
geom_point(color = "darkgreen", alpha = 0.5) +
labs(x = "Fecha", y = "Número de paquetes descargados",
title = "Paquetes descargados de CRAN en México por mes")
g_ym
Resumen de los paquetes más descargados (solo de CRAN; no incluye los paquetes de Bioconductor)
cran_mex %>%
group_by(package) %>%
summarise(count = n()) %>%
arrange(desc(count))
Cuando tengo tiempo voy a evaluar los datos de Centroamérica y América del Sur. Fue un error no hacerlo cuando generé la tabla de México porque la mayoría del tiempo es usado en cargar los archivos.
c_am <- c("BZ", "GT", "HN", "SV", "NI", "CR", "PA")
s_am <- c("CO", "VE", "EC", "BO", "PE", "CL", "AR", "BR", "UY", "PY", "SR", "GY")
cran_c_am <- tibble()
cran_s_am <- tibble()
for (i in 1:length(new_urls)) {
df <- read_csv(paste0("~/Documents/R/R_examples/cran_logs/",
str_sub(new_urls[i], 35, 44), ".csv.gz"))
cran_c_am <- rbind(cran_c_am, filter(df, country %in% c_am))
cran_s_am <- rbind(cran_s_am, filter(df, country %in% s_am))
}
g_c_am <- cran_c_am %>%
group_by(date, country) %>%
summarise(count = n()) %>%
ggplot(aes(x = date, y = count, color = as.factor(country))) +
geom_point(alpha = 0.5) +
labs(x = "Fecha", y = "Número de paquetes descargados",
title = "Paquetes descargados de CRAN en Centroamérica")
g_c_am
g_s_am <- cran_s_am %>%
group_by(date, country) %>%
summarise(count = n()) %>%
ggplot(aes(x = date, y = count, color = as.factor(country))) +
geom_point(alpha = 0.5) +
labs(x = "Fecha", y = "Número de paquetes descargados",
title = "Paquetes descargados de CRAN en América del Sur")
g_s_am
save.image(file = "cran_dls.RData")