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内で、会社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