Des nouvelles de rCarto – Obtenir des stats sur un package

[MAJ]
Maintenant que le package cartography est sur le CRAN, j’incite fortement les potentiels utilisateurs à préférer celui-ci plutôt que rCarto. Petite présentation ici.
[/MAJ]

Je suis récemment tombé sur ce post qui m’a ensuite mené à celui-ci. En m’inspirant de ces deux posts je me suis intéressé aux stats de rCarto. Combien de fois a-t-il été téléchargé? D’où a-t-il été téléchargé?

Préparation des données

Télécharger les log journaliers
J’ai téléchargé directement l’ensemble des logs journaliers (au lieu d’utiliser l’API JSON de RStudio qui ne donne pas d’informations sur l’origine géographique des téléchargements).
Le téléchargement des logs prend pas mal de temps.

# liste des URL des logs à télécharger
start <- as.Date('2013-04-01')
end <- as.Date('2015-02-28')
all_days <- seq(start, end, by = 'day')
year <- as.POSIXlt(all_days)$year + 1900
urls <- paste0('http://cran-logs.rstudio.com/', 
               year, 
               '/', 
               all_days, 
               '.csv.gz')
lurl <- length(urls)
# téléchargement des logs
for (i in 1:lurl) {
  download.file(urls[i], sprintf("data/temp%i.csv.gz", i))
}

Comme proposé dans le post de Strenge Jacke! j’ai ensuite décompressé manuellement les archives.

Sélectionner les téléchargements de rCarto uniquement
Cette étape prend elle aussi pas mal de temps.

# selection des logs concernant un package
name_package <- "rCarto"
log_package <- data.frame() 
for (i in 1:lurl) {
  df.csv <- read.csv(sprintf("/data/temp%i.csv", i))
  my.package <- which(df.csv$package == name_package)
  log_package <- rbind(log_package, 
                       df.csv[my.package, c("date","country","package")])
}

La table créée (log_package)contient trois champs (date, country et package)

Créer un graphique des téléchargements mensuels

# aggregation mensuelle
log_package$date.short <- strftime(log_package$date, 
                                   format="%Y-%m")
log_package$dummy <- 1
mydf <- aggregate(log_package$dummy, 
                  by = list(month = log_package$date.short), 
                  FUN = "sum")

# Liste de tous les mois entre start et end
# si jamais le package n'est pas téléchargé certains mois
monthly_dl <- seq(from = as.Date(start, "%Y-%m-%d"), 
                  to = as.Date(end,"%Y-%m-%d"), 
                  by = "month")
monthly_dl <- data.frame(month = substr(monthly_dl,1,7))
monthly_dl <- merge(monthly_dl, mydf, by = "month",  all.x = TRUE)
names(monthly_dl)[2] <- "nb_dl"
monthly_dl[is.na(monthly_dl$nb_dl), "nb_dl"] <- 0

# Création du graphique
png('nbdownload.png', width = 500, height = 400)
par(bg = "grey80")
barplot(height = monthly_dl$nb_dl,
        names.arg = monthly_dl$month,
        ylab = "nb. téléchargements", 
        col = "#920000", space = 0, 
        las = 2, cex.names =  0.7, cex.axis = 0.7)
title("Téléchargements mensuels de rCarto", cex.sub = 0.7,
      sub = "source : http://cran-logs.rstudio.com/")
dev.off()

nbdownloadLe package a été téléchargé 4155 fois sur la période. Il est téléchargé au minimum 100 fois par mois et au maximum 313. Il est également de plus en plus téléchargé.

D’où a-t-il été téléchargé ?

# aggregation géographique
log_package$dummy <- 1
geo_package <- aggregate(log_package$dummy, 
                  by = list(country = log_package$country), 
                  FUN = "sum")
names(geo_package)[2] <- "nb_dl"

# cartographie
library(rCarto)
png('mapnbdownload.png', width = 640, height = 380)
mapCircles(shpFile = "data/worldcountries.shp", 
           shpId = "ISO2", df = geo_package, dfId = "country", 
           var = "nb_dl", circleCol = '#920000',baseCol = "grey60",
           posLeg = 'left', 
           author = "T. Giraud - 2015",
           sources = "source : http://cran-logs.rstudio.com/",
           width = 22, txtCex = 2.5,
           title = "Répartition des téléchargement de rCarto", 
           legend = "Nombre de \ntéléchargement")
dev.off()
Cliquer sur l'image pour l'agrandir
Cliquer sur l’image pour l’agrandir

Pour analyser dans le détail cette carte il faudrait avoir des données de référence sur l’utilisation de R (ou de RStudio, ou des packages) dans chacun des pays. Une solution pourrait être de comparer cette carte à celles d’autres packages (les x packages les plus populaires).
Je n’ai essayé que pour le package ggplot2. En utilisant la part de chaque pays dans le total des téléchargements et en fixant la taille du plus grand cercle, les cartes suivantes sont comparables:

Cliquer sur l'image pour l'agrandir
Cliquer sur l’image pour l’agrandir
Cliquer sur l'image pour l'agrandir
Cliquer sur l’image pour l’agrandir

Une rapide comparaison (par rapport à la répartition des téléchargements de ggplot2 uniquement – 1345924 téléchargements sur la période!) révèle que rCarto est relativement plus utilisé en France, en Italie, en Chine, au Japon. En revanche rCarto est relativement moins utilisé dans le monde anglophone (USA, Canada, Royaume-Uni, Australie…). Je comprends bien l’utilisation plus importante en France, pour le reste, aucune idée… Bon, il ne s’agit que d’une partie des téléchargements du package (ceux fait via le CRAN de RStudio), j’ai quand même été assez surpris de l’utilisation croissante du package, en tout cas de ses téléchargements. Cela suit peut-être simplement l’augmentation du nombre d’utilisateurs de R ou de RStudio…
Un prochain billet évoquera l’avenir du développement de rCarto…


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *