始める無料で始める

Split-Apply-Combine

データフレームをあるグループで分割し、各グループに変換を適用し、その結果を再び1つのデータフレームに結合する――これはデータサイエンスでよくある課題です。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 にアクセスするためのものです。2つ目の $ は、A 内のデータフレームにある cash_flow 列にアクセスするためのものです。

この演習はコースの一部です

金融のためのR入門

コースを見る

演習の手順

  • split_cash データフレームが用意されています。cash を分割するのに使った grouping も利用できます。
  • リストの中身を確認するために、split_cash を表示してください。
  • split_cash 内で、会社 Bcash_flow 列を表示してください。
  • 悲しいことに、会社 A が倒産したことが分かりました。会社 A の cash_flow0 に設定してください。
  • 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
コードを編集して実行