Zoeken…


Invoering

Ontvang gegevens rechtstreeks in een R-sessie. Een van de leuke kenmerken van R is het gemak van gegevensverzameling. Er zijn verschillende manieren om gegevens te verspreiden met behulp van R-pakketten.

Ingebouwde datasets

R heeft een uitgebreide verzameling ingebouwde gegevenssets. Gewoonlijk worden ze gebruikt voor onderwijsdoeleinden om snel en gemakkelijk reproduceerbare voorbeelden te maken. Er is een mooie webpagina met de ingebouwde gegevenssets:

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


Voorbeeld

Gegevens over Zwitserse vruchtbaarheid en sociaaleconomische indicatoren (1888). Laten we het verschil in vruchtbaarheid bekijken op basis van het platteland en de dominantie van de katholieke bevolking.

library(tidyverse) 

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

ingebouwd

Datasets binnen pakketten

Er zijn pakketten die gegevens bevatten of die specifiek zijn gemaakt om gegevenssets te verspreiden. Wanneer een dergelijk pakket wordt geladen ( library(pkg) ), worden de bijgevoegde gegevenssets beschikbaar als R-objecten; of ze moeten worden aangeroepen met de functie data() .


Gapminder

Een mooie dataset over de ontwikkeling van landen.

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()

Gapminder


World Population Prospects 2015 - Bevolking van de Verenigde Naties

Laten we eens kijken hoe de wereld is samengekomen in de levensverwachting van mannen bij de geboorte in de periode 1950-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

Pakketten voor toegang tot open databases

Tal van pakketten zijn specifiek gemaakt om toegang te krijgen tot sommige databases. Het gebruik hiervan kan een hoop tijd besparen bij het lezen / formatteren van de gegevens.


Eurostat

Hoewel eurostat pakket een functie search_eurostat() , vindt het niet alle relevante datasets beschikbaar. Dit is handiger om handmatig door de code van een gegevensset te bladeren op de website van Eurostat: landendatabase of regionale database . Als de geautomatiseerde download niet werkt, kunnen de gegevens handmatig worden opgehaald via Bulk Download Facility .

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

Pakketten voor toegang tot beperkte gegevens

Human Mortality Database

Human Mortality Database is een project van het Max Planck Instituut voor demografisch onderzoek dat gegevens over menselijke sterfte verzamelt en voorwerkt in die landen, waar min of meer betrouwbare statistieken beschikbaar zijn.

# 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

Let op, de argumenten user_hmd en pass_hmd zijn de inloggegevens op de website van Human Mortality Database. Om toegang tot de gegevens te krijgen, moet u een account maken op http://www.mortality.org/ en hun eigen gegevens readHMDweb() voor de functie 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow