開始使用免費開始

計算所有運動的移動平均

你已經會把資料篩成只包含週末比賽了,客戶現在希望你換個角度思考。也許當在地球隊在「主場」贏得更多比賽時,波士頓的觀光業會受益。

這次不要專注於週末比賽,而是要產生一個聚焦於「在波士頓進行的比賽」的移動勝負平均。要建立這個指標,你會再次使用前面提到的 rollapply() 指令,不過這次要對所有波士頓地區的球隊計算,同時只取主場比賽來子集化。

本練習屬於課程

個案研究:在 R 中分析城市時間序列資料

檢視課程

練習說明

  • data[column == x] 的格式,將 sports 資料子集化為只包含在波士頓進行的主場比賽(homegame = 1)。把這個新物件命名為 homegames
  • 使用 rollapply() 計算波士頓球隊最近 20 場主場比賽的勝負平均。你需要指定 homegameswin_loss 欄位,將 width 設為 20,並將 FUN 參數設為 mean。把這個指標存回 homegames 物件為 win_loss_20
  • 以類似的 rollapply() 呼叫計算「100 場」的移動勝負平均。把這個指標存回 homegames 物件為 win_loss_100
  • 使用 plot.zoo() 視覺化這兩個指標。請選取 win_loss_20win_loss_100 兩個欄位,並將 plot.type 設為 "single",以便在同一個面板中查看兩者。ltylwd 參數維持原樣即可。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Generate a subset of sports data with only homegames
homegames <- sports[sports$___ == ___]

# Calculate the win/loss average of the last 20 home games
homegames$win_loss_20 <- rollapply(___$___, width = ___, FUN = ___)

# Calculate the win/loss average of the last 100 home games
homegames$win_loss_100 <- 

# Use plot.xts to generate
plot.zoo(___[, c("___", "___")], plot.type = "___", lty = lty, lwd = lwd)
編輯並執行程式碼