ifelse()
Une fonction très utile à connaître est ifelse(). Elle permet d’écrire une condition if en une seule ligne de code, et mieux encore, elle fonctionne sur des vecteurs entiers !
Supposons que vous ayez un vecteur de cours boursiers. Et si vous vouliez renvoyer "Buy!" chaque fois que apple > 110, et "Do nothing!" sinon ? Une simple instruction if ne suffirait pas. En revanche, avec ifelse() vous pouvez faire :
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() évalue l’argument test pour obtenir un vecteur logique ; là où ce vecteur vaut TRUE, TRUE est remplacé par la valeur de yes. De même, FALSE est remplacé par no.
Le data frame stocks est à votre disposition.
Cet exercice fait partie du cours
R intermédiaire pour la finance
Instructions
- Utilisez
ifelse()pour tester simicrest supérieur à60mais inférieur à62. Si c’est vrai, renvoyez1, sinon0. Ajoutez le résultat àstockssous forme de colonnemicr_buy. - Utilisez
ifelse()pour tester siappleest strictement supérieur à117. La valeur renvoyée doit être la colonnedatesiTRUE, etNAsinon. - Affichez
stocks. La colonnedateest devenue numérique !ifelse()retire l’attribut de date avant de la renvoyer, elle devient donc un nombre. - Donnez à la colonne
apple_datelaclass()de"Date". - Affichez à nouveau
stocks.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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
___