ifelse()
Een krachtige functie om te kennen is ifelse(). Die maakt een if-statement in 1 regel code en werkt bovendien op hele vectoren!
Stel, je hebt een vector met aandelenkoersen. Wat als je elke keer "Buy!" wilt terugkrijgen wanneer apple > 110, en anders "Do nothing!"? Een simpele if-statement is dan niet genoeg. Met ifelse() kan het zo:
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() evalueert test tot een logische vector, en waar die vector TRUE is, vervangt het TRUE door wat in yes staat. Op dezelfde manier wordt FALSE vervangen door no.
De data frame stocks is voor je beschikbaar.
Deze oefening maakt deel uit van de cursus
R voor finance voor gevorderden
Oefeninstructies
- Gebruik
ifelse()om te testen ofmicrboven60maar onder62is. Als dat zo is, geef1terug; anders0. Voeg het resultaat toe aanstocksals de kolommicr_buy. - Gebruik
ifelse()om te testen ofapplegroter is dan117. De teruggegeven waarde moet de kolomdatezijn alsTRUE, en andersNA. - Print
stocks.dateis een numeriek geworden!ifelse()stript het attribuut van de datum voordat het die teruggeeft, waardoor het een numeriek wordt. - Geef de kolom
apple_datedeclass()van"Date". - Print
stocksopnieuw.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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
___