Split-Apply-Combine
在資料科學中,很常見的問題是依照某個分組把資料框分割,對每個群組套用轉換,然後再把結果合併回單一資料框。這類問題在 R 裡非常常見,因此有一個名稱叫作「split-apply-combine」。在 Intermediate R for Finance 中,你會更深入探索多種相關問題與實用函式;不過現在,先來看一個簡單的例子。
假設在 cash 資料框中,你想把公司 A 的 cash_flow 乘以 2,把公司 B 的 cash_flow 乘以 3:
grouping <- cash$company
split_cash <- split(cash, grouping)
# 你可以這樣存取每個清單元素的 cash_flow 欄位:
split_cash$A$cash_flow
[1] 1000 4000 550
split_cash$A$cash_flow <- split_cash$A$cash_flow * 2
split_cash$B$cash_flow <- split_cash$B$cash_flow * 3
new_cash <- unsplit(split_cash, grouping)
再看一次如何存取 cash_flow 欄位。第一個 $ 是用來存取 split_cash 清單中的 A 元素。第二個 $ 則是用來存取 A 裡資料框的 cash_flow 欄位。
本練習屬於課程
R for Finance 入門
練習說明
- 已為你提供
split_cash資料框,另外也有用來分割cash的grouping。 - 列印
split_cash,先看看這個清單的內容。 - 列印
split_cash中公司B的cash_flow欄位。 - 很遺憾地,你得知公司 A 已經倒閉。把公司 A 的
cash_flow設為0。 - 使用
grouping來對split_cash資料框進行unsplit()。將結果指定給cash_no_A。 - 最後,列印
cash_no_A,查看更新後的資料框。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Print split_cash
# Print the cash_flow column of B in split_cash
split_cash$___$___
# Set the cash_flow column of company A in split_cash to 0
split_cash$___$___ <- ___
# Use the grouping to unsplit split_cash
cash_no_A <- unsplit(___, ___)
# Print cash_no_A