开始使用免费开始使用

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 中,打印公司 Bcash_flow 列。
  • 很遗憾,您得知公司 A 已经倒闭。将公司 A 的 cash_flow 设为 0
  • 使用 groupingsplit_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
编辑并运行代码