1. 学ぶ
  2. /
  3. コース
  4. /
  5. 金融のための中級R

Connected

演習

ifelse()

知っておくと強力な関数が ifelse() です。これは1行で if 文を書けるうえ、ベクトル全体にも適用できます。

株価のベクトルがあるとしましょう。apple > 110 のときは毎回 "Buy!" を返し、それ以外は "Do nothing!" を返したい場合はどうでしょうか。単純な if 文だけでは対応しきれません。しかし、ifelse() を使えば次のように書けます。

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() は test を評価して論理ベクトルを作り、その論理ベクトルが TRUE の位置では TRUE を yes の中身で置き換えます。同様に、FALSE は no で置き換えられます。

stocks データフレームが用意されています。

指示

100 XP
  • ifelse() を使って、micr が 60 より大きく、かつ 62 未満かを判定してください。真なら 1、偽なら 0 を返し、その結果を micr_buy 列として stocks に追加します。
  • ifelse() を使って、apple が 117 より大きいかを判定します。TRUE の場合は date 列、そうでなければ NA を返してください。
  • stocks を出力します。date が数値になってしまいましたね。ifelse() は返す際に日付の属性を取り除いてしまうため、数値になります。
  • apple_date 列に "Date" の class() を割り当ててください。
  • もう一度 stocks を出力します。