Recherche…


Introduction

Obtenez des données directement dans une session R. Une des fonctionnalités intéressantes de R est la facilité d’acquisition de données. Il existe plusieurs manières de diffuser les données en utilisant des packages R.

Jeux de données intégrés

R possède une vaste collection de jeux de données intégrés. Habituellement, ils sont utilisés à des fins pédagogiques pour créer des exemples rapides et facilement reproductibles. Il y a une belle page Web répertoriant les jeux de données intégrés:

https://vincentarelbundock.github.io/Rdatasets/datasets.html


Exemple

Indicateurs suisses de fécondité et socioéconomiques (1888). Vérifions la différence de fécondité fondée sur la ruralité et la domination de la population catholique.

library(tidyverse) 

swiss %>% 
        ggplot(aes(x = Agriculture, y = Fertility, 
                   color = Catholic > 50))+
        geom_point()+
        stat_ellipse()

intégré

Ensembles de données dans les packages

Il existe des packages qui incluent des données ou qui sont créés spécifiquement pour diffuser des ensembles de données. Lorsqu'un tel paquet est chargé ( library(pkg) ), les jeux de données attachés deviennent disponibles en tant qu'objets R; ou ils doivent être appelés avec la fonction data() .


Gapminder

Un bel ensemble de données sur le développement des pays.

library(tidyverse)
library(gapminder)

gapminder %>% 
        ggplot(aes(x = year, y = lifeExp, 
                   color = continent))+
        geom_jitter(size = 1, alpha = .2, width = .75)+
        stat_summary(geom = "path", fun.y = mean, size = 1)+
        theme_minimal()

écarteur


World Population Prospects 2015 - Département de la population des Nations Unies

Voyons comment le monde a convergé dans l'espérance de vie masculine à la naissance entre 1950 et 2015.

library(tidyverse)
library(forcats)
library(wpp2015)
library(ggjoy)
library(viridis)
library(extrafont)

data(UNlocations)

countries <- UNlocations %>% 
        filter(location_type == 4) %>% 
        transmute(name = name %>% paste()) %>% 
        as_vector()

data(e0M) 

e0M %>% 
        filter(country %in% countries) %>% 
        select(-last.observed) %>% 
        gather(period, value, 3:15) %>% 
        ggplot(aes(x = value, y = period %>% fct_rev()))+
        geom_joy(aes(fill = period))+
        scale_fill_viridis(discrete = T, option = "B", direction = -1, 
                           begin = .1, end = .9)+
        labs(x = "Male life expectancy at birth",
             y = "Period",
             title = "The world convergence in male life expectancy at birth since 1950",
             subtitle = "Data: UNPD World Population Prospects 2015 Revision",
             caption = "ikashnitsky.github.io")+
        theme_minimal(base_family =  "Roboto Condensed", base_size = 15)+
        theme(legend.position = "none")

wpp-2015

Packages pour accéder aux bases de données ouvertes

De nombreux packages sont créés spécifiquement pour accéder à certaines bases de données. Leur utilisation permet de gagner beaucoup de temps lors de la lecture / mise en forme des données.


Eurostat

Bien que le paquet eurostat ait une fonction search_eurostat() , il ne trouve pas tous les ensembles de données pertinents disponibles. Il est plus pratique de parcourir manuellement le code d’un ensemble de données sur le site Web d’Eurostat: base de données des pays ou base de données régionale . Si le téléchargement automatisé ne fonctionne pas, les données peuvent être récupérées manuellement via la fonction de téléchargement en bloc .

library(tidyverse)
library(lubridate)
library(forcats)
library(eurostat)
library(geofacet)
library(viridis)
library(ggthemes)
library(extrafont)

# download NEET data for countries
neet <- get_eurostat("edat_lfse_22")

neet %>% 
        filter(geo %>% paste %>% nchar == 2,
               sex == "T", age == "Y18-24") %>%
        group_by(geo) %>% 
        mutate(avg = values %>% mean()) %>% 
        ungroup() %>% 
        ggplot(aes(x = time %>% year(),
                   y = values))+
        geom_path(aes(group = 1))+
        geom_point(aes(fill = values), pch = 21)+
        scale_x_continuous(breaks = seq(2000, 2015, 5),
                           labels = c("2000", "'05", "'10", "'15"))+
        scale_y_continuous(expand = c(0, 0), limits = c(0, 40))+
        scale_fill_viridis("NEET, %", option = "B")+
        facet_geo(~ geo, grid = "eu_grid1")+
        labs(x = "Year",
             y = "NEET, %",
             title = "Young people neither in employment nor in education and training in Europe",
             subtitle = "Data: Eurostat Regional Database, 2000-2016",
             caption = "ikashnitsky.github.io")+
        theme_few(base_family =  "Roboto Condensed", base_size = 15)+
        theme(axis.text = element_text(size = 10),
              panel.spacing.x = unit(1, "lines"),
              legend.position = c(0, 0),
              legend.justification = c(0, 0))

eurostat

Packages pour accéder aux données restreintes

Base de données sur la mortalité humaine

Human Mortality Database est un projet de l’ Institut Max Planck de recherche démographique qui rassemble et pré-traite des données sur la mortalité humaine dans les pays où des statistiques plus ou moins fiables sont disponibles.

# load required packages
library(tidyverse) 
library(extrafont)
library(HMDHFDplus)

country <- getHMDcountries()

exposures <- list()
for (i in 1: length(country)) {
        cnt <- country[i]
        exposures[[cnt]] <- readHMDweb(cnt, "Exposures_1x1", user_hmd, pass_hmd)
        # let's print the progress
        paste(i,'out of',length(country)) 
} # this will take quite a lot of time

Veuillez noter que les arguments user_hmd et pass_hmd sont les identifiants de connexion sur le site Web de Human Mortality Database. Pour accéder aux données, il faut créer un compte sur http://www.mortality.org/ et fournir leurs propres informations d'identification à la fonction readHMDweb() .

sr_age <- list()

for (i in 1:length(exposures)) {
        di <- exposures[[i]]
        sr_agei <- di %>% select(Year,Age,Female,Male) %>% 
                filter(Year %in% 2012) %>%
                select(-Year) %>%
                transmute(country = names(exposures)[i],
                          age = Age, sr_age = Male / Female * 100)
        sr_age[[i]] <- sr_agei
}
sr_age <- bind_rows(sr_age)

# remove optional populations
sr_age <- sr_age %>% filter(!country %in% c("FRACNP","DEUTE","DEUTW","GBRCENW","GBR_NP"))

# summarize all ages older than 90 (too jerky)
sr_age_90 <- sr_age %>% filter(age %in% 90:110) %>% 
        group_by(country) %>% summarise(sr_age = mean(sr_age, na.rm = T)) %>%
        ungroup() %>% transmute(country, age=90, sr_age)

df_plot <- bind_rows(sr_age %>% filter(!age %in% 90:110), sr_age_90)

# finaly - plot
df_plot %>% 
        ggplot(aes(age, sr_age, color = country, group = country))+
        geom_hline(yintercept = 100, color = 'grey50', size = 1)+
        geom_line(size = 1)+
        scale_y_continuous(limits = c(0, 120), expand = c(0, 0), breaks = seq(0, 120, 20))+
        scale_x_continuous(limits = c(0, 90), expand = c(0, 0), breaks = seq(0, 80, 20))+
        xlab('Age')+
        ylab('Sex ratio, males per 100 females')+
        facet_wrap(~country, ncol=6)+
        theme_minimal(base_family = "Roboto Condensed", base_size = 15)+
        theme(legend.position='none',
              panel.border = element_rect(size = .5, fill = NA))

hmd



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow