affairs-dplyr

datawrangling
eda
string
Published

March 27, 2023

Aufgabe

Laden Sie den Datensatz affairs:

affairs_path <- "https://vincentarelbundock.github.io/Rdatasets/csv/AER/Affairs.csv"
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:

  1. Filtern Sie mal nach Halodries!
  2. Sortieren Sie (absteigend) nach Anzahl der Affären!
  3. 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.
  4. Berechnen Sie die mittlere Anzahl der Affären!
  5. Berechnen Sie die mittlere Anzahl der Affären pro Geschlecht und aufgeteilt auf Partnerschaften mit bzw. ohne Kinder.
  6. Geben Sie für jede Person die höhere der zwei Zahlen von Religiösität und Ehezufriedenheit aus!
  7. 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