-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprak-10-solutions.Rmd
196 lines (126 loc) · 5.54 KB
/
prak-10-solutions.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
---
title: "Praktikum 10 - Daten zusammenfügen"
author: ""
date: ""
output:
html_document:
toc: true
toc_float: true
editor_options:
chunk_output_type: console
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)
```
# Lade Packages
```{r}
library(tidyverse) # Läd die wichtigsten Packages des Tidyverse gemeinsam
library(knitr) # Package wird für Funktion kable() geladen
library(DT) # Package wird für Funktion datatable() geladen
library(gt) # Package wird für Funktion gt() geladen
```
# Daten
1. **Einkäufe**: Eine Reihe pro Kunde und Produkt. Listet die Einkäufe eines der Kunden.
2. **Preise**: Eine Reihe pro Produkt im Supermarkt. Listet die Preise der Produkte.
3. **Kundenprofil**: Eine Reihe pro Kunde im Bonusprogramm. Listet die Merkmale der Kunden.
# Übungen
## Übung 1 - Daten importieren
1. Lade die drei Datensätze für die Übung mittels der Funktion `read_csv()` in deine Arbeitsumgebung und gebe diesen die Namen:
- `einkaeufe`
- `preise`
- `kundenprofile`
**Tipp:** Schau im File Manager (unten rechts) nach wo die Daten gespeichert sind um den Pfad und Dateinamen für die Funktion zu identifizieren.
```{r}
einkaeufe <- read_csv(file = "data/supermarkt/einkaeufe.csv")
preise <- read_csv(file = "data/supermarkt/preise.csv")
kundenprofile <- read_csv(file = "data/supermarkt/kundenprofile.csv")
```
2. Strick das Dokument und dann: git add, commit, push alle Veränderung zurück auf GitHub
## Übung 2 - Daten erkunden
1. Nutze die Funktion `names()` für jeden Dataframe um die Spaltennamen zu erkunden. Über welche Variablen können die Daten zusammengefügt werden?
2. Nutze die Funktion `nrow()` für jeden Dataframe um die Anzahl Reihen zu identifizieren.
3. Nutze andere Funktionen die dir bekannt sind um die drei Dataframes zu erkunden
```{r}
names(einkaeufe)
names(preise)
names(kundenprofile)
nrow(einkaeufe)
nrow(preise)
nrow(kundenprofile)
glimpse(einkaeufe)
glimpse(preise)
glimpse(kundenprofile)
```
2. Strick das Dokument und dann: git add, commit, push alle Veränderung zurück auf GitHub
## Übung 3 - Daten zusammenfügen
1. Nutze die drei Dataframes um verschiedene Kombinationen von joins auszuprobieren. Ich habe im Code-chunk bereits ein Beispiel vorbereitet.
2. Schaut euch den Output in der Console jeweils genau an und überlegt welche joins (Zusammenfügungen) für welche Fragestellungen sinnvoll wären.
Als Erinnerung, die drei Funktionen, die du kennengelernt hast:
- `left_join()`
- `right_join()`
- `full_join()`
```{r}
# Kombination 1
preise %>%
left_join(einkaeufe)
# Kombination 2
einkaeufe %>%
left_join(preise)
# Schreibt hier eure Beispiele
# Kombination 3
einkaeufe %>%
left_join(preise) %>%
left_join(kundenprofile)
# etc.
einkaeufe %>%
left_join(kundenprofile)
kundenprofile %>%
left_join(einkaeufe)
```
3. Starte mit dem Objekt `einkauefe` und nutze die Funktion `left_join()` um dieses mit dem Objekt `preise` zusammenzufügen. Speicher das Ergebnis als ein neues Objekt in deiner Arbeitsumgebung (Environment) mit dem Namen `einkaeufe_preise`.
```{r}
einkaeufe_preise <- einkaeufe %>%
left_join(preise)
```
4. Strick das Dokument und dann: git add, commit, push alle Veränderung zurück auf GitHub
## Übung 4 - Neue Variable erstellen
1. Starte mit dem Objekt `einkauefe_preise` und nutze die Funktion `mutate()` um eine neue Variable mit dem Namen 'kosten' zu erstellen. Das Variable soll eine Multiplikation der Spalte 'einkauf' mit der Spalte 'preis' beinhalten. Speicher das Ergebnis als ein neues Objekt in deiner Arbeitsumgebung (Environment) mit dem Namen `einkaeufe_kosten`.
```{r}
einkaeufe_kosten <- einkaeufe_preise %>%
mutate(kosten = einkauf * preis)
```
## Übung 5 - Daten zusammenfassen (Bonus)
1. Starte mit dem Objekt `einkaeufe_kosten` und gruppiere die Daten nach 'kunden_id'. Berechne dann die Summe aus den Kosten um den geschuldeten Betrag der Kund_innen zu berechnen. Speicher das Ergebnis in deiner Arbeitsumgebung mit dem Namen `einkaeufe_kosten_sum`. Ich habe Code mit Lücken für dich vorbereitet.
2. Setze die Code-chunk Option von 'eval=FALSE' auf 'eval=TRUE' um den Code beim nächsten Stricken mit auszuführen.
```{r, eval=TRUE}
einkaeufe_kosten_sum <- einkaeufe_kosten %>%
group_by(kunden_id) %>%
summarise(
summe = sum(kosten)
)
```
2. Starte mit dem Objekt `einkaeufe_kosten_sum` und nutze die Funktion `left_join()` um dieses mit dem Objekt `kundenprofile` zusammenzufügen. Selektiere dann nur die Spalten 'vorname', 'nachname', 'summe' und 'email'.
```{r}
kunden_tab <- einkaeufe_kosten_sum %>%
left_join(kundenprofile) %>%
select(ends_with("name"), summe, email)
```
3. Strick das Dokument und dann: git add, commit, push alle Veränderung zurück auf GitHub
## Übung 6 - Daten als Tabelle darstellen (Bonus)
1. Nutze das Objekt `kunden_tab` und den Pipe-Operator um eine Code-Sequenz zu schreiben welche das Objekt `kunden_tab` mit der Funktion `gt()` verbindet.
```{r}
kunden_tab %>%
gt()
```
2. Nutze das Objekt `kunden_tab` und den Pipe-Operator um eine Code-Sequenz zu schreiben welche das Objekt `kunden_tab` mit der Funktion `datatable()` verbindet.
```{r}
kunden_tab %>%
datatable()
```
3. Nutze das Objekt `kunden_tab` und den Pipe-Operator um eine Code-Sequenz zu schreiben welche das Objekt `kunden_tab` mit der Funktion `kable()` verbindet.
```{r}
kunden_tab %>%
kable()
```
4. Strick das Dokument und schau dir die drei Tabellen in der resulitierenden HTML Datei an.
5. Git add, commit, push alle Veränderung zurück auf GitHub