เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Split-Apply-Combine

ปัญหาที่พบบ่อยในด้านวิทยาศาสตร์ข้อมูลคือการแบ่ง data frame ออกเป็นกลุ่ม ประมวลผลแต่ละกลุ่ม แล้วนำกลับมารวมกันเป็น data frame เดิม แนวทางนี้พบบ่อยมากในการเขียนโปรแกรม R จนมีชื่อเรียกเฉพาะว่า split-apply-combine ใน Intermediate R for Finance จะได้เรียนรู้ปัญหาและฟังก์ชันที่ใช้แก้ไขรูปแบบนี้อย่างละเอียด แต่สำหรับตอนนี้ ลองทำตัวอย่างง่าย ๆ กันก่อน

สมมติว่าสำหรับ data frame cash ต้องการคูณ cash_flow ของบริษัท A ด้วย 2 และคูณของบริษัท B ด้วย 3:

grouping <- cash$company
split_cash <- split(cash, grouping)

# We can access each list element's cash_flow column by:
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: เครื่องหมาย $ ตัวแรกใช้เข้าถึงอิลิเมนต์ A ใน list split_cash และ $ ตัวที่สองใช้เข้าถึงคอลัมน์ cash_flow ใน data frame ของ A

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

R เบื้องต้นสำหรับการเงิน

ดูคอร์ส

คำแนะนำการฝึกหัด

  • มี data frame split_cash และ grouping ที่ใช้แบ่ง cash พร้อมให้ใช้งานแล้ว
  • พิมพ์ split_cash เพื่อดูโครงสร้างของ list
  • พิมพ์คอลัมน์ cash_flow ของบริษัท B ใน split_cash
  • น่าเสียดายที่บริษัท A ปิดกิจการไปแล้ว ให้กำหนด cash_flow ของบริษัท A เป็น 0
  • ใช้ grouping กับฟังก์ชัน unsplit() เพื่อรวม split_cash กลับเข้าด้วยกัน แล้วกำหนดผลลัพธ์ให้กับ cash_no_A
  • สุดท้าย พิมพ์ cash_no_A เพื่อดู data frame ที่แก้ไขแล้ว

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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
แก้ไขและรันโค้ด