เติมค่าที่หายไปตามวันซื้อขาย
แบบฝึกหัดก่อนหน้านำค่าสุดท้ายของวันก่อนหน้ามาเติมเป็นค่าแรกของวันถัดไป แบบฝึกหัดนี้จะแสดงวิธีเติมค่าที่หายไปตามวันซื้อขาย โดยไม่ใช้ค่าสุดท้ายของวันก่อนหน้า
จะใช้รูปแบบ split-lapply-rbind เดิมจากคอร์ส Introduction to xts and zoo ตัวอย่างรูปแบบมีดังนี้
x_split <- split(x, f = "months")
x_list <- lapply(x_split, cummax)
x_list_rbind <- do.call(rbind, x_list)
ขอให้ระลึกว่า syntax do.call(rbind, ...) ช่วยให้ส่งลิสต์ของอ็อบเจกต์ให้ rbind() ได้โดยตรง โดยไม่ต้องพิมพ์ชื่อทีละตัว
ใน workspace มีอ็อบเจกต์ trade_day ที่เก็บชุดข้อมูลแบบสม่ำเสมอจากแบบฝึกหัดก่อนหน้า แต่ยังไม่มีการเติมค่า NA ใด ๆ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การนำเข้าและจัดการข้อมูลทางการเงินใน R
คำแนะนำการฝึกหัด
- สร้างอ็อบเจกต์
daily_listโดยใช้split()เพื่อแบ่งข้อมูลในtrade_dayออกเป็นลิสต์ตามแต่ละวัน - จากนั้นใช้
lapply()เพื่อเติมค่าNAในข้อมูลของแต่ละวันในลิสต์daily_list - สุดท้าย ใช้
do.call()และrbind()เพื่อแปลงdaily_filledให้เป็นอ็อบเจกต์ xts ชิ้นเดียว โดยตั้งชื่อว่าfilled_by_trade_day
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Split trade_day into days
daily_list <- split(___ , f = "___")
# Use lapply to call na.locf for each day in daily_list
daily_filled <- lapply(___, FUN = ___)
# Use do.call to rbind the results
filled_by_trade_day <- do.call(rbind, ___)