開始使用免費開始

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 資料框,另外也有用來分割 cashgrouping
  • 列印 split_cash,先看看這個清單的內容。
  • 列印 split_cash 中公司 Bcash_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
編輯並執行程式碼