Wir empfehlen die Verwendung von “Projects” innerhalb von RStudio. RStudio legt für jedes Projekt dann einen Ordner an, in welches die Projekt-Datei abgelegt wird (Dateiendung .Rproj). Sollen innerhalb des Projekts dann R-Skripts geladen oder erzeugt werden, werden diese dann auch im angelegten Ordner abgelegt. Mehr zu RStudio Projects findet ihr hier.
Das Verwenden von Projects bringt verschiedene Vorteile, wie zum Beispiel:
Festlegen der Working Directory ohne die Verwendung des expliziten Pfades (setwd()). Das ist sinnvoll, da sich dieser Pfad ändern kann (Zusammenarbeit mit anderen Usern, Ausführung des Scripts zu einem späteren Zeitpunkt)
Automatisches Zwischenspeichern geöffneter Scripts und Wiederherstellung der geöffneten Scripts bei der nächsten Session
Was für Datentypen wurden in der letzten Aufgabe automatisch angenommen? Ermittle diese mit str() und prüfe, ob diese sinnvoll sind und wandle um wo nötig.
Musterlösung
str(df)## 'data.frame': 4 obs. of 5 variables:## $ Tierart : chr "Fuchs" "Bär" "Hase" "Elch"## $ Anzahl : num 2 5 1 3## $ Gewicht : num 4.4 40.3 1.1 120## $ Geschlecht : chr "m" "f" "m" "m"## $ Beschreibung: chr "Rötlich" "Braun, gross" "klein, mit langen Ohren" "Lange Beine, Schaufelgeweih"typeof(df$Anzahl)## [1] "double"# Anzahl wurde als `double` interpretiert, ist aber eigentlich ein `integer`.df$Anzahl <-as.integer(df$Anzahl)
Aufgabe 3
Nutze die Spalte Gewicht, um die Tiere in 3 Gewichtskategorien einzuteilen:
Auf Moodle findest du ein Zip-File mit dem Namen prepro.zip. Lade das File herunter und entpacke es in deinem Projektordner. Importiere die Datei weather.csv. Falls du dafür das RStudio GUI verwendest, speichere den Import-Befehl in deinem R-Script ab. Bitte verwende einen relativen Pfad (also kein Pfad, der mit C:/, ~/ o.ä. beginnt).)
Hinweis 3.1
Wir nutzen readr, um csvs zu importieren, und verwenden die Funktion read_delim (mit underscore) als alternative zu read.csv oder read.delim (mit Punkt). Das ist eine persönliche Präferenz1, es ist euch überlassen, welche Funktion ihr verwendet. Beachtet, dass die beiden Funktionen leicht andere Parameter erwarten.
Schau dir die Rückmeldung von read_delim() an. Sind die Daten korrekt interpretiert worden?
Musterlösung
# Die Spalte 'time' wurde als 'integer' interpretiert. Dabei handelt es# sich offensichtlich um Zeitangaben.
Aufgabe 6
Die Spalte time ist eine Datum/Zeitangabe im Format JJJJMMTTHH (siehe meta.txt). Damit R dies als Datum-/Zeitangabe erkennt, müssen wir die Spalte in einem R-Format (POSIXct) einlesen und dabei R mitteilen, wie sie aktuell formatiert ist. Lies die Spalte mit as.POSIXct() ein und spezifiziere sowohl format wie auch tz.
Tipp
Wenn keine Zeitzone festgelegt wird, trifft as.POSIXct() eine Annahme (basierend auf Sys.timezone()). In unserem Fall handelt es sich aber um Werte in UTC (siehe metadata.csv)
as.POSIXct erwartet character: Wenn du eine Fehlermeldung hast die 'origin' must be supplied (o.ä) heisst, hast du der Funktion vermutlich einen Numeric übergeben.
Musterlösung
wetter$time <-as.POSIXct(as.character(wetter$time), format ="%Y%m%d%H", tz ="UTC")
Die neue Tabelle sollte so aussehen
stn
time
tre200h0
ABO
2000-01-01 00:00:00
-2.6
ABO
2000-01-01 01:00:00
-2.5
ABO
2000-01-01 02:00:00
-3.1
ABO
2000-01-01 03:00:00
-2.4
ABO
2000-01-01 04:00:00
-2.5
ABO
2000-01-01 05:00:00
-3.0
ABO
2000-01-01 06:00:00
-3.7
ABO
2000-01-01 07:00:00
-4.4
ABO
2000-01-01 08:00:00
-4.1
ABO
2000-01-01 09:00:00
-4.1
Aufgabe 7
Erstelle zwei neue Spalten mit Wochentag (Montag, Dienstag, etc) und Kalenderwoche. Verwende dazu die neu erstellte POSIXct-Spalte sowie eine geeignete Funktion aus lubridate.