CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Utilisez ifelse() pour tester si micr est supérieur à 60 mais inférieur à 62. Si c’est vrai, renvoyez 1, sinon 0. Ajoutez le résultat à stocks sous forme de colonne micr_buy.
  • Utilisez ifelse() pour tester si apple est strictement supérieur à 117. La valeur renvoyée doit être la colonne date si TRUE, et NA sinon.
  • Affichez stocks. La colonne date est devenue numérique ! ifelse() retire l’attribut de date avant de la renvoyer, elle devient donc un nombre.
  • Donnez à la colonne apple_date la class() 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
___
Modifier et exécuter le code