逐列迴圈處理資料框
想像一下,你想找出 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!"))
}
}