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
1        6       3   male  27          1.5       no             3        18
2       12       3 female  27          4.0      yes             3        17
  occupation rating
1          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
1       53      12 female  32           10      yes             3        17
2      122      12   male  37           15      yes             4        14
  occupation rating
1          5      2
2          5      2
 [ reached 'max' / getOption("max.print") -- omitted 8 rows ]

Ad 3.

affairs %>% 
  select(affairs, rating, children) %>% 
  arrange(children, affairs) %>% 
  head(10)
  affairs rating children
1       0      4       no
2       0      4       no
3       0      3       no
4       0      5       no
5       0      3       no
6       0      5       no
 [ reached 'max' / getOption("max.print") -- omitted 4 rows ]

Ad 4.

affairs %>% 
  summarise(affairs_mean = mean(affairs)) %>% 
  head(10)
  affairs_mean
1     1.455907

Ad 5.

affairs %>% 
  group_by(gender, children) %>% 
  summarise(affairs_mean = mean(affairs)) %>% 
  head(10)
# A tibble: 4 × 3
# Groups:   gender [2]
  gender children affairs_mean
  <chr>  <chr>           <dbl>
1 female no              0.838
2 female yes             1.69 
3 male   no              1.01 
4 male   yes             1.66 

Ad 6.

affairs %>% 
  rowwise() %>% 
  summarise(max(c(religiousness, rating))) %>% 
  head(10)
# A tibble: 10 × 1
   `max(c(religiousness, rating))`
                             <int>
 1                               4
 2                               4
 3                               4
 4                               5
 5                               3
 6                               5
 7                               3
....

Ad 7.

affairs %>% 
  mutate(heiratsalter = age - yearsmarried) %>%
  head(10)
  rownames affairs gender age yearsmarried children religiousness education
1        4       0   male  37           10       no             3        18
  occupation rating heiratsalter
1          7      4           27
 [ reached 'max' / getOption("max.print") -- omitted 9 rows ]

Categories:

  • datawrangling
  • eda
  • string