Tierart | Anzahl | Gewicht | Geschlecht | Beschreibung |
---|---|---|---|---|
Fuchs | 2 | 4.4 | m | Rötlich |
Bär | 5 | 40.3 | f | Braun, gross |
Hase | 1 | 1.1 | m | klein, mit langen Ohren |
Elch | 3 | 120.0 | m | Lange Beine, Schaufelgeweih |
PrePro 1: Übung
Arbeiten mit RStudio “Project”
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
- Festlegen verschiedener projektspezifischer Optionen
- Verwendung von Versionsverwaltungssystemen (z.B. git)
Die korrekte Verwendung von RStudio Projects und relativen Pfaden wird an der praktischen Prüfung vorausgesetzt!
Aufgabe 1
Erstelle eine data.frame
mit nachstehenden Daten.
Aufgabe 2
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.
Aufgabe 3
Nutze die Spalte Gewicht
, um die Tiere in 3 Gewichtskategorien einzuteilen:
- leicht: < 5kg
- mittel: 5 - 100 kg
- schwer: > 100kg
Das Resultat:
Tierart | Anzahl | Gewicht | Geschlecht | Beschreibung | Gewichtsklasse |
---|---|---|---|---|---|
Fuchs | 2 | 4.4 | m | Rötlich | leicht |
Bär | 5 | 40.3 | f | Braun, gross | mittel |
Hase | 1 | 1.1 | m | klein, mit langen Ohren | leicht |
Elch | 3 | 120.0 | m | Lange Beine, Schaufelgeweih | schwer |
Aufgabe 4
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).)
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.
stn | time | tre200h0 |
---|---|---|
ABO | 2000010100 | -2.6 |
ABO | 2000010101 | -2.5 |
ABO | 2000010102 | -3.1 |
ABO | 2000010103 | -2.4 |
ABO | 2000010104 | -2.5 |
ABO | 2000010105 | -3.0 |
ABO | 2000010106 | -3.7 |
ABO | 2000010107 | -4.4 |
ABO | 2000010108 | -4.1 |
ABO | 2000010109 | -4.1 |
Aufgabe 5
Schau dir die Rückmeldung von read_delim()
an. Sind die Daten korrekt interpretiert worden?
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
.
- Wenn keine Zeitzone festgelegt wird, trifft
as.POSIXct()
eine Annahme (basierend aufSys.timezone()
). In unserem Fall handelt es sich aber um Werte in UTC (siehe metadata.csv) as.POSIXct
erwartetcharacter
: Wenn du eine Fehlermeldung hast die'origin' must be supplied
(o.ä) heisst, hast du der Funktion vermutlich einenNumeric
übergeben.
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
.
stn | time | tre200h0 | wochentag | kw |
---|---|---|---|---|
ABO | 2000-01-01 00:00:00 | -2.6 | Sa | 1 |
ABO | 2000-01-01 01:00:00 | -2.5 | Sa | 1 |
ABO | 2000-01-01 02:00:00 | -3.1 | Sa | 1 |
ABO | 2000-01-01 03:00:00 | -2.4 | Sa | 1 |
ABO | 2000-01-01 04:00:00 | -2.5 | Sa | 1 |
ABO | 2000-01-01 05:00:00 | -3.0 | Sa | 1 |
ABO | 2000-01-01 06:00:00 | -3.7 | Sa | 1 |
ABO | 2000-01-01 07:00:00 | -4.4 | Sa | 1 |
ABO | 2000-01-01 08:00:00 | -4.1 | Sa | 1 |
ABO | 2000-01-01 09:00:00 | -4.1 | Sa | 1 |
Aufgabe 8
Erstelle eine neue Spalte basierend auf den Temperaturwerten mit der Einteilung “kalt” (unter Null Grad) und “warm” (über Null Grad)
stn | time | tre200h0 | wochentag | kw | temp_kat |
---|---|---|---|---|---|
ABO | 2000-01-01 00:00:00 | -2.6 | Sa | 1 | kalt |
ABO | 2000-01-01 01:00:00 | -2.5 | Sa | 1 | kalt |
ABO | 2000-01-01 02:00:00 | -3.1 | Sa | 1 | kalt |
ABO | 2000-01-01 03:00:00 | -2.4 | Sa | 1 | kalt |
ABO | 2000-01-01 04:00:00 | -2.5 | Sa | 1 | kalt |
ABO | 2000-01-01 05:00:00 | -3.0 | Sa | 1 | kalt |
ABO | 2000-01-01 06:00:00 | -3.7 | Sa | 1 | kalt |
ABO | 2000-01-01 07:00:00 | -4.4 | Sa | 1 | kalt |
ABO | 2000-01-01 08:00:00 | -4.1 | Sa | 1 | kalt |
ABO | 2000-01-01 09:00:00 | -4.1 | Sa | 1 | kalt |
Vorteile von
read_delim
gegenüberread.csv
: https://stackoverflow.com/a/60374974/4139249↩︎