Suche…


Einführung

Holen Sie sich Daten direkt in eine R-Sitzung. Eine der schönen Eigenschaften von R ist die einfache Datenerfassung. Es gibt mehrere Möglichkeiten, Daten mit R-Paketen zu verbreiten.

Eingebaute Datensätze

R verfügt über eine umfangreiche Sammlung eingebauter Datensätze. In der Regel werden sie zu Unterrichtszwecken verwendet, um schnell und leicht reproduzierbare Beispiele zu erstellen. Es gibt eine schöne Webseite mit den eingebauten Datensätzen:

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


Beispiel

Schweizer Fertilitäts- und sozioökonomische Indikatoren (1888) Daten. Untersuchen wir den Unterschied in der Fruchtbarkeit basierend auf der ländlichen Entwicklung und der Dominanz der katholischen Bevölkerung.

library(tidyverse) 

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

eingebaut

Datensätze in Paketen

Es gibt Pakete, die Daten enthalten oder speziell zur Verbreitung von Datensätzen erstellt wurden. Wenn ein solches Paket geladen wird ( library(pkg) ), werden die angehängten Datensätze entweder als R-Objekte verfügbar. oder sie müssen mit der Funktion data() aufgerufen werden.


Gapminder

Ein schöner Datensatz zur Entwicklung von Ländern.

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


Perspektiven für die Weltbevölkerung 2015 - Bevölkerungsabteilung der Vereinten Nationen

Mal sehen, wie die Welt die männliche Lebenserwartung bei der Geburt zwischen 1950 und 2015 erreicht hat.

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

Pakete für den Zugriff auf offene Datenbanken

Zahlreiche Pakete werden speziell für den Zugriff auf einige Datenbanken erstellt. Ihre Verwendung kann beim Lesen / Formatieren der Daten viel Zeit sparen.


Eurostat

Obwohl das Paket von eurostat über die Funktion search_eurostat() verfügt, werden nicht alle relevanten Datensätze gefunden. Dies ist bequemer, wenn Sie den Code eines Datensatzes manuell auf der Eurostat-Website durchsuchen: Länder- oder Regionaldatenbank . Wenn der automatisierte Download nicht funktioniert, können die Daten manuell über die Bulk Download-Funktion abgerufen werden.

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

Pakete für den Zugriff auf eingeschränkte Daten

Datenbank der menschlichen Mortalität

Die Datenbank über die menschliche Mortalität ist ein Projekt des Max-Planck-Instituts für demografische Forschung , das Daten zur menschlichen Mortalität für jene Länder erfasst und vorverarbeitet, in denen mehr oder weniger zuverlässige Statistiken verfügbar sind.

# 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

Bitte beachten Sie, dass die Argumente user_hmd und pass_hmd die Anmeldeinformationen auf der Website der Human Mortality Database sind. Um auf die Daten zugreifen zu können, müssen Sie ein Konto bei http://www.mortality.org/ erstellen und Ihre eigenen Anmeldeinformationen für die Funktion 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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow