Ihr könnt über den Link unten ein R-Skript mit den Lösungsvorschlägen herunterladen.
1 Laden und Sichten der Daten
Ladet euch für diesen Teil der Übungsaufgabe die folgende CSV-Datei auf euren Computer herunter und speichert sie in einem Ordner eurer Wahl.
Öffnet nun eine neue R-Skriptdatei und setzt das Arbeitsverzeichnis für eure Sitzung auf den Ordner, in dem die Datei liegt. Versucht, die folgenden Aufgaben mittels R zu lösen. Speichert alle Kommandos in eurem R-Skript und verwendet Kommentare, um den Code den Aufgaben zuordnen zu können.
1.1 Daten als Tibble einlesen
Schreibt den notwendigen Code, um die Datei als Dataframe, genauer gesagt, als Tibble, zu laden. Welches Paket könnt ihr dafür verwenden?
Das Paket readr, das mit dem Tidyverse automatisch mitgeladen wird, bietet eine Funktion zum Laden von CSV-Dateien:
rewe <- read_csv("data/rewe_products.csv")
1.2 Anzahl Zeilen und Spalten ausgeben
Wie viele Spalten und Zeilen sind im Datensatz enthalten? Gebt die Spaltennamen auf der Konsole aus!
rewe %>% dim()
rewe %>% colnames()
1.3 Daten sichten
Findet Lösungen für die folgenden Aufgaben zur Sichtung der Daten:
Lasst euch die ersten 20 Produktnamen ausgeben! Wie könnt ihr alle Produkte sehen?
rewe %>%
select(productName) %>%
head(20)
# Alle Produktnamen als Vektor (theoretisch, Ausgabe stoppt bei 1000)
rewe %>%
select(productName) %>%
pull()
Gebt die ersten 30 Marken aus. Was fällt euch auf? Wie könntet ihr das lösen?
# Die ersten 20 Marken im Datensatz
rewe %>%
select(brand) %>%
head(20)
# Ohne NAs
rewe %>%
select(brand) %>%
drop_na() %>%
head(20)
# Nur eindeutige Werte
rewe %>%
distinct(brand) %>%
drop_na()
Gebt die 5 Produkte mit dem höchsten Fettgehalt aus!
Erstellt eine neue Spalte sum_nutrition, in der ihr die Summe aller Nährwertangaben bildet (auch wenn es inhaltlich nicht viel Sinn ergibt). Belasst im Ergebnis nur die neue Summenspalte und die einzelnen Nährwertspalten!
Berechnet, ob ein Produkt mehr als 90 % Fett enthält und speichert diese Information auf einer neuen Spalte high_fat. Zeigt zur Überprüfung nur Zeilen an, bei denen der Wert TRUE ist. Die neue Spalte soll vor der Spalte productDescription eingefügt werden.
Listet alle Produktkategorien nach dem durchschnittlichen Fettgehalt ihrer Produkte auf. Auf welches Problem stoßt ihr dabei und wie könnt ihr das lösen?
Das Problem sind die NA Werte. Ist nur ein NA dabei ist das Ergebnis der Aggregation (hier: mean) ebenfalls NA. Die Lösung ist der Parameter na.rm, den wir auf TRUE setzen. Dadurch werden bei der Aggregation die NA-Werte entfernt und nur mit gültigen Werten gerechnet:
Es fällt auch, dass die Spalten gtin und productId als numerische Werte erkannt wurden, auch wenn es sich hierbei eher um IDs handelt. Wir müsen diese Spalten manuell in das korrekte Format konvertieren (s. auch Aufgabe ):