Split-Apply-Combine
在数据科学中,一个常见的问题是:按某个分组将数据框拆分,对每个分组应用某种变换,然后再把这些部分合并回一个数据框。在 R 中,这类问题非常常见,被称为 split-apply-combine。在《Intermediate R for Finance》中,您将学习更多此类问题以及解决它们的有用函数。现在,我们先做一个简单的示例。
假设在 cash 数据框中,您希望将公司 A 的 cash_flow 翻倍,将公司 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 金融入门
练习说明
- 已为您提供
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