affairs_path <- "https://vincentarelbundock.github.io/Rdatasets/csv/AER/Affairs.csv"affairs-dplyr
datawrangling
eda
string
Aufgabe
Laden Sie den Datensatz affairs:
affairs <- read.csv(affairs_path)Lesen Sie das Data Dictionnary hier.
Wir definieren als “Halodrie” eine Person mit mindestens einer Affäre (laut Datensatz).
Bearbeiten Sie folgende Aufgaben:
- Filtern Sie mal nach Halodries!
- Sortieren Sie (absteigend) nach Anzahl der Affären!
- Wählen Sie die Spalten zu Anzahl der Affären, ob es Kinder in der Ehe gibt und die Zufriedenheit mit der Ehe. Dann sortieren Sie dann nach Anzahl der Kinder und danach nach der Anzahl der Affären.
- Berechnen Sie die mittlere Anzahl der Affären!
- Berechnen Sie die mittlere Anzahl der Affären pro Geschlecht und aufgeteilt auf Partnerschaften mit bzw. ohne Kinder.
- Geben Sie für jede Person die höhere der zwei Zahlen von Religiösität und Ehezufriedenheit aus!
- Berechnen Sie jeweils das Heiratsalter!
Lösung
library(tidyverse)Ad 1.
affairs %>%
filter(affairs > 0) %>%
head(10)| rownames | affairs | gender | age | yearsmarried | children | religiousness | education | occupation | rating |
|---|---|---|---|---|---|---|---|---|---|
| 6 | 3 | male | 27 | 1.500 | no | 3 | 18 | 4 | 4 |
….
:::
:::
Hinweis: head(10) begrenzt die Ausgabe auf 10 Zeilen, einfach um den Bildschirm nicht vollzumüllen.
Ad 2.
affairs %>%
arrange(-affairs) %>%
head(10)| rownames | affairs | gender | age | yearsmarried | children | religiousness | education | occupation | rating |
|---|---|---|---|---|---|---|---|---|---|
| 53 | 12 | female | 32 | 10.0 | yes | 3 | 17 | 5 | 2 |
| 122 | 12 | male | 37 | 15.0 | yes | 4 | 14 | 5 | 2 |
| 174 | 12 | female | 42 | 15.0 | yes | 5 | 9 | 4 | 1 |
| 176 | 12 | male | 37 | 10.0 | yes | 2 | 20 | 6 | 2 |
| 181 | 12 | female | 32 | 15.0 | yes | 3 | 14 | 1 | 2 |
| 252 | 12 | male | 27 | 1.5 | yes | 3 | 17 | 5 | 4 |
….
:::
:::
Ad 3.
affairs %>%
select(affairs, rating, children) %>%
arrange(children, affairs) %>%
head(10)| affairs | rating | children |
|---|---|---|
| 0 | 4 | no |
| 0 | 4 | no |
| 0 | 3 | no |
| 0 | 5 | no |
| 0 | 3 | no |
| 0 | 5 | no |
….
:::
:::
Ad 4.
affairs %>%
summarise(affairs_mean = mean(affairs)) %>%
head(10)| affairs_mean |
|---|
| 1.455907 |
Ad 5.
affairs %>%
group_by(gender, children) %>%
summarise(affairs_mean = mean(affairs)) %>%
head(10)| gender | children | affairs_mean |
|---|---|---|
| female | no | 0.8383838 |
| female | yes | 1.6851852 |
| male | no | 1.0138889 |
| male | yes | 1.6588785 |
Ad 6.
affairs %>%
rowwise() %>%
summarise(max(c(religiousness, rating))) %>%
head(10)| max(c(religiousness, rating)) |
|---|
| 4 |
| 4 |
| 4 |
| 5 |
| 3 |
| 5 |
….
:::
:::
Ad 7.
affairs %>%
mutate(heiratsalter = age - yearsmarried) %>%
head(10)| rownames | affairs | gender | age | yearsmarried | children | religiousness | education | occupation | rating | heiratsalter |
|---|---|---|---|---|---|---|---|---|---|---|
| 4 | 0 | male | 37 | 10.00 | no | 3 | 18 | 7 | 4 | 27.00 |
| 5 | 0 | female | 27 | 4.00 | no | 4 | 14 | 6 | 4 | 23.00 |
| 11 | 0 | female | 32 | 15.00 | yes | 1 | 12 | 1 | 4 | 17.00 |
| 16 | 0 | male | 57 | 15.00 | yes | 5 | 18 | 6 | 5 | 42.00 |
| 23 | 0 | male | 22 | 0.75 | no | 2 | 17 | 6 | 3 | 21.25 |
| 29 | 0 | female | 32 | 1.50 | no | 2 | 17 | 5 | 5 | 30.50 |
….
:::
:::
Categories:
- datawrangling
- eda
- string