ifelse()
Eine sehr nützliche Funktion ist ifelse(). Sie erstellt eine if-Abfrage in nur einer Codezeile – und mehr noch: Sie funktioniert auf ganzen Vektoren!
Angenommen, du hast einen Vektor mit Aktienkursen. Du möchtest jedes Mal "Buy!" zurückgeben, wenn apple > 110 ist, und ansonsten "Do nothing!"? Eine einfache if-Anweisung reicht dafür nicht aus. Mit ifelse() kannst du jedoch Folgendes tun:
apple
[1] 109.49 109.90 109.11 109.95 111.03 112.12
ifelse(test = apple > 110, yes = "Buy!", no = "Do nothing!")
[1] "Do nothing!" "Do nothing!" "Do nothing!" "Do nothing!" "Buy!"
[6] "Buy!"
ifelse() wertet den test aus und erhält dadurch einen logischen Vektor. An den Stellen, an denen der Vektor TRUE ist, wird TRUE durch den Wert in yes ersetzt. Entsprechend wird FALSE durch no ersetzt.
Der Data Frame stocks steht dir zur Verfügung.
Diese Übung ist Teil des Kurses
R für Finanzen – Aufbaukurs
Anleitung zur Übung
- Verwende
ifelse(), um zu prüfen, obmicrüber60, aber unter62liegt. Wenn wahr, gib1zurück, sonst0. Füge das Ergebnis als Spaltemicr_buyzustockshinzu. - Verwende
ifelse(), um zu prüfen, obapplegrößer als117ist. Der zurückgegebene Wert soll beiTRUEdie Spaltedatesein, sonstNA. - Gib
stocksaus.dateist eine Zahl geworden!ifelse()entfernt das Attribut vom Datum, bevor es zurückgegeben wird, daher wird es numerisch. - Weise der Spalte
apple_datedieclass()"Date"zu. - Gib
stockserneut aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Microsoft test
stocks$micr_buy <- ifelse(test = ___, yes = ___, no = ___)
# Apple test
stocks$apple_date <- ifelse(test = ___, yes = stocks$date, no = NA)
# Print stocks
___
# Change the class() of apple_date.
class(___) <- ___
# Print stocks again
___