始める無料で始める

データフレームの行をループする

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 にはその反復の日付を入れます。
    • 今回は、apple116 を上回るかを確認します。
    • 上回った場合は、dateprice を出力します。
    • 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!"))
    }
}
コードを編集して実行