In diesem Abschnitt sollen alle Graphiken mit ggplot und
alle Tabellen mit kable erstellt werden.
Nutzen Sie den Datensatz carData::UN. In der Hilfe
finden Sie Hinweise, was dort gezeigt ist. Beachten Sie, dass für einige
Länder Werte fehlen (NA); diese Länder sollen nicht
berücksichtigt werden.
Erzeugen Sie diese Graphik, indem Sie den nachfolgenden Chunk vervollständigen. Die gezeigten Länder sind Germany, United States, China, India, Afghanistan, Sierra Leone, Japan, Cuba.
Tipp: Sie dürfen (und sollen) weitere Libraries nutzen, wenn diese hilfreich sind.
# Ihre Lösung:
library(dplyr)
##
## Attache Paket: 'dplyr'
## Die folgenden Objekte sind maskiert von 'package:stats':
##
## filter, lag
## Die folgenden Objekte sind maskiert von 'package:base':
##
## intersect, setdiff, setequal, union
library(knitr)
un = carData::UN
kable(un[1:20,])
| region | group | fertility | ppgdp | lifeExpF | pctUrban | infantMortality | |
|---|---|---|---|---|---|---|---|
| Afghanistan | Asia | other | 5.968 | 499.0 | 49.49 | 23 | 124.53500 |
| Albania | Europe | other | 1.525 | 3677.2 | 80.40 | 53 | 16.56100 |
| Algeria | Africa | africa | 2.142 | 4473.0 | 75.00 | 67 | 21.45800 |
| American Samoa | NA | NA | NA | NA | NA | NA | 11.29389 |
| Angola | Africa | africa | 5.135 | 4321.9 | 53.17 | 59 | 96.19100 |
| Anguilla | Caribbean | other | 2.000 | 13750.1 | 81.10 | 100 | NA |
| Argentina | Latin Amer | other | 2.172 | 9162.1 | 79.89 | 93 | 12.33700 |
| Armenia | Asia | other | 1.735 | 3030.7 | 77.33 | 64 | 24.27200 |
| Aruba | Caribbean | other | 1.671 | 22851.5 | 77.75 | 47 | 14.68700 |
| Australia | Oceania | oecd | 1.949 | 57118.9 | 84.27 | 89 | 4.45500 |
| Austria | Europe | oecd | 1.346 | 45158.8 | 83.55 | 68 | 3.71300 |
| Azerbaijan | Asia | other | 2.148 | 5637.6 | 73.66 | 52 | 37.56600 |
| Bahamas | Caribbean | other | 1.877 | 22461.6 | 78.85 | 84 | 14.13500 |
| Bahrain | Asia | other | 2.430 | 18184.1 | 76.06 | 89 | 6.66300 |
| Bangladesh | Asia | other | 2.157 | 670.4 | 70.23 | 29 | 41.78600 |
| Barbados | Caribbean | other | 1.575 | 14497.3 | 80.26 | 45 | 12.28400 |
| Belarus | Europe | other | 1.479 | 5702.0 | 76.37 | 75 | 6.49400 |
| Belgium | Europe | oecd | 1.835 | 43814.8 | 82.81 | 97 | 3.73900 |
| Belize | Latin Amer | other | 2.679 | 4495.8 | 77.81 | 53 | 16.20000 |
| Benin | Africa | africa | 5.078 | 741.1 | 58.66 | 42 | 76.67400 |
library(ggplot2)
library(ggrepel)
# Nur Länder ohne NA Werte
un = un[complete.cases(un[, c("ppgdp", "infantMortality")]), ]
markierte_laender = c(
"Germany", "United States", "China", "India",
"Afghanistan", "Sierra Leone", "Japan", "Cuba"
)
labeldaten = un[rownames(un) %in% markierte_laender, ]
ggplot(un, aes(x = ppgdp, y = infantMortality)) +
geom_point() +
geom_text_repel(
data = labeldaten,
color="blue",
aes(label = rownames(labeldaten))) +
scale_x_log10() +
scale_y_log10() +
labs(
title= "BIP in Abhängigkeit der Säuglingssterblichkeit",
x = "BIP pro Kopf (US-Dollar)",
y = "Säuglingssterblichkeit (pro 1000 Lebendgeburten"
)
Geben Sie diejenigen 10 Länder als Tabelle im Notebook aus, die das größte Verhältnis \(r\) von Säuglingssterblichkeit zu Wirtschaftsleistung haben. Dabei ist \(r\) die Säuglingssterblichkeit (pro 1000 Lebendgeburten) je 1000 US-Dollar BIP pro Kopf. Die Liste soll nach \(r\) absteigend sortiert sein und den Ländernamen und \(r\) enthalten.
Vervollständigen Sie diesen Chunk:
# Ihre Lösung:
library(tibble)
library(dplyr)
relation = function(ppgdp, infantMortality) ppgdp / infantMortality
un_r = un |> mutate(relation = round(relation(ppgdp, infantMortality)))
werte = tibble(
Land = rownames(un_r),
relation = un_r$relation) |> filter(!is.na(relation)) # Filter eigentlich nicht nötig
top10 = werte |>
slice_max(order_by = relation, n=10, with_ties = FALSE) |>
arrange(desc(relation))
kable(top10)
| Land | relation |
|---|---|
| Luxembourg | 45913 |
| Norway | 28772 |
| Singapore | 22851 |
| Switzerland | 19607 |
| Sweden | 19224 |
| Iceland | 19095 |
| Japan | 16925 |
| Finland | 15991 |
| Hong Kong | 15708 |
| Denmark | 14264 |
Geben Sie nun – wie eben – diejenigen 10 Länder als Tabelle aus, die das kleinste Verhältnis \(r\) haben. Die Liste soll nach \(r\) absteigend sortiert sein.
Vervollständigen Sie diesen Chunk:
# Ihre Lösung:
bottom10 = werte |>
slice_min(order_by = relation, n=10, with_ties = FALSE) |>
arrange(desc(relation))
kable(bottom10)
| Land | relation |
|---|---|
| Central African Republic | 5 |
| Ethiopia | 5 |
| Afghanistan | 4 |
| Malawi | 4 |
| Niger | 4 |
| Liberia | 3 |
| Sierra Leone | 3 |
| Burundi | 2 |
| Democratic Republic of the Congo | 2 |
| Somalia | 1 |
Nutzen Sie den Datensatz nlme::Orthodont. In der Hilfe
finden Sie Hinweise, was dort gezeigt ist.
Plotten Sie im folgenden Chunk den Verlauf des Abstands zwischen Hypophyse und Fossa pterygopalatina (y-Achse) in Abhängigkeit vom Alter (x-Achse). Dies soll in einem Diagramm mit Unterdiagrammen erfolgen: ein Unterdiagramm zeigt den Verlauf für je ein Kind (Subject) und dessen Geschlecht (Male oder Female).
# Ihre Lösung:
orthodont = nlme::Orthodont
kable(orthodont[1:10, ])
| distance | age | Subject | Sex |
|---|---|---|---|
| 26.0 | 8 | M01 | Male |
| 25.0 | 10 | M01 | Male |
| 29.0 | 12 | M01 | Male |
| 31.0 | 14 | M01 | Male |
| 21.5 | 8 | M02 | Male |
| 22.5 | 10 | M02 | Male |
| 23.0 | 12 | M02 | Male |
| 26.5 | 14 | M02 | Male |
| 23.0 | 8 | M03 | Male |
| 22.5 | 10 | M03 | Male |
ggplot(orthodont) +
geom_line(aes(x=age, y=distance, group=Subject)) +
geom_point(aes(x=age, y=distance, group=Subject)) +
facet_wrap(~ Subject + Sex) +
labs(title="Überblick des Abstandsverlaufs pro Kind", x="Alter", y="Abstand Hypophyse und Fossa Pterygopalatina")
Erzeugen Sie ein Diagramm, das in zwei Unterdiagrammen für die Jungen und die Mädchen Boxplots erstellt. Die Boxplots geben die Verteilung des Abstands je Alter an. In Anlehnung an das obige Diagramm sollen die Boxplots vertikal ausgerichtet sein.
# Ihre Lösung:
ggplot(orthodont) +
geom_boxplot(aes(x=age, y=distance, group=age, fill=age)) +
facet_wrap(~ Sex) +
labs(title="Boxplot des Abstands je Alter", x="Alter", y="Abstand Hypophyse und Fossa Pterygopalatina")