Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Gebruik ifelse() om te testen of micr boven 60 maar onder 62 is. Als dat zo is, geef 1 terug; anders 0. Voeg het resultaat toe aan stocks als de kolom micr_buy.
  • Gebruik ifelse() om te testen of apple groter is dan 117. De teruggegeven waarde moet de kolom date zijn als TRUE, en anders NA.
  • Print stocks. date is een numeriek geworden! ifelse() stript het attribuut van de datum voordat het die teruggeeft, waardoor het een numeriek wordt.
  • Geef de kolom apple_date de class() van "Date".
  • Print stocks opnieuw.

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
___
Code bewerken en uitvoeren