データフレームの行をループする
Apple の株価が 117 を上回った日を知りたいとします。この値を超えたら、その日の日時と株価を出力したいと考えています。date 列と apple 価格の列を持つ stock データフレームがあれば、データフレームの各行をループしてこれを実現できるでしょうか?もちろん可能です!
その前に、データフレームの行数は nrow(stock) で取得できることを確認しておきましょう。次に、1:nrow(stock) の範囲でループするためのシーケンスを作成できます。
for (row in 1:nrow(stock)) {
price <- stock[row, "apple"]
date <- stock[row, "date"]
if(price > 117) {
print(paste("On", date,
"the stock price was", price))
}
}
[1] "On 2016-12-21 the stock price was 117.06"
[1] "On 2016-12-27 the stock price was 117.26"
ここまで学んだ内容がいくつも登場します。if 文、ベクトルの抽出、条件分岐、そしてループです。ここまで習得できたこと、おめでとうございます!
stocks データフレームが用意されています。自由に使ってください。
この演習はコースの一部です
金融のための中級R
演習の手順
- 次を満たすように for ループ内の空欄を埋めてください。
priceにはその反復の株価を入れます。dateにはその反復の日付を入れます。- 今回は、
appleが116を上回るかを確認します。 - 上回った場合は、
dateとpriceを出力します。 116未満だった場合は、dateを出力し、重要な日ではなかったことも出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Loop over stock rows
for (row in 1:___) {
price <- stock[___, "___"]
date <- stock[___, "___"]
if(___ > ___) {
print(paste("On", ___,
"the stock price was", ___))
} else {
print(paste("The date:", ___,
"is not an important day!"))
}
}