CommencezCommencez gratuitement

ifelse()

Une fonction très utile à connaître est ifelse(). Elle permet d'écrire une instruction if sur 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 retourner "Buy!" chaque fois que apple > 110, et "Do nothing!" sinon? Une simple instruction if ne suffirait pas pour résoudre ce problème. Par contre, 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 test pour obtenir un vecteur logique, et là où le vecteur logique vaut TRUE, il remplace TRUE par la valeur de yes. De même, FALSE est remplacé par no.

La trame de données stocks est à votre disposition.

Cette activité fait partie du cours

R intermédiaire pour la finance

Voir le cours

Instructions de l’exercice

  • Utilisez ifelse() pour tester si micr est supérieur à 60 mais inférieur à 62. Si c'est vrai, retournez 1, sinon 0. Ajoutez le résultat à stocks comme colonne micr_buy.
  • Utilisez ifelse() pour tester si apple est supérieur à 117. La valeur retournée doit être la colonne date si TRUE, et NA sinon.
  • Affichez stocks. date est devenu numérique! ifelse() enlève l'attribut de date avant de le retourner, donc il devient un numérique.
  • Attribuez à la colonne apple_date la class() de "Date".
  • Affichez de nouveau stocks.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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