library(dplyr)
library(tidyr)
library(ggplot2)
library(purrr)
library(gapminder)
library(skimr)
library(DT)
library(gghighlight)
library(plotly)
library(ggthemes)

data(gapminder)

if (params$max_year < params$min_year) stop("Bitte eine positive Zeitspanne angeben!")

if(params$continent != "all") {
  gapminder <- gapminder %>% 
    filter(continent == params$continent)
}

gapminder <- gapminder %>% 
  filter(year >= params$min_year & year <= params$max_year)

Datenbasis

Hier werden die Daten aus dem Gapminder-Projekt erforscht. Sie enthalten r nrow(gapminder) Zeilen (= Länderdaten aus verschiedenen Jahren) und r ncol(gapminder) Variablen (Spalten).

Hier eine erste Übersicht über den Datensatz:

skim(gapminder)

Hier die Originaldaten zum Stöbern:

datatable(gapminder)

Lebenserwartung im Zeitverlauf

Vergleich zweier ausgewählter Länder:

Statisches Diagramm

gapminder %>% 
  ggplot(aes(x = year, y = lifeExp, color = country)) +
  geom_line(size = 1.5) +
  gghighlight(country %in% c(params$Land1, params$Land2),
              unhighlighted_params = list(size = .75),
              use_group_by = FALSE) +
  labs(title = "Lebenserwartung im Zeitverlauf", subtitle = paste(params$Land1, "im Vergleich mit", params$Land2),
       caption = "Source: Gapminder project /
       gapminder R package by Jenny Bryan") +
  scale_color_discrete(name = "")

Interaktives Diagramm mit plotly

p <- gapminder %>% 
  ggplot(aes(x = year, y = lifeExp, color = country)) +
  geom_line(size = 0.4) +
  labs(title = "Lebenserwartung im Zeitverlauf") +
  theme_bw() +
  theme(legend.position = "none")

ggplotly(p, tooltip = c("x", "y", "colour"))

p <- gapminder %>% 
  ggplot(aes(x = year, y = lifeExp, color = country)) +
  geom_line(size = 0.4) +
  labs(title = "Lebenserwartung im Zeitverlauf") +
  theme_economist() +
  theme(legend.position = "none")

ggplotly(p, tooltip = c("x", "y", "colour"))

Erweiterte Analysen: delta lifeExp und R²

Tabellarisch, zum Sortieren: Zwei neue Variablen.

Wenige Codezeilen genügen, um für beliebig viele Länder separate Regressionsmodelle zu erstellen.

gapminder2 <- gapminder %>% 
  group_by(country) %>% 
  mutate(delta_lifeExp = round(max(lifeExp) - min(lifeExp), 2)) %>% 
  ungroup()

# R²

getrsq <- function(data) {
  model <- lm(lifeExp ~ year, data = data)
  summary(model)$r.squared
}

gapminder2 <- gapminder2 %>% 
  group_by(country) %>% 
  nest() %>% 
  mutate(rsq = round(map_dbl(data, getrsq), 3)) %>% 
  unnest(cols = data) %>% 
  ungroup()

datatable(gapminder2)


fjodor/omnitrend documentation built on March 31, 2020, 12:58 a.m.