Điền giá trị thiếu theo ngày giao dịch
Bài trước đã mang quan sát cuối cùng của ngày trước sang quan sát đầu tiên của ngày tiếp theo. Bài này sẽ cho bạn thấy cách điền giá trị thiếu theo từng ngày giao dịch, mà không dùng giá trị cuối cùng của ngày trước.
Bạn sẽ dùng lại mô hình split-lapply-rbind từ khóa học Introduction to xts and zoo. Tham khảo mẫu dưới đây.
x_split <- split(x, f = "months")
x_list <- lapply(x_split, cummax)
x_list_rbind <- do.call(rbind, x_list)
Hãy nhớ rằng cú pháp do.call(rbind, ...) cho phép bạn truyền một danh sách các đối tượng vào rbind() thay vì phải gõ toàn bộ tên của chúng.
Không gian làm việc của bạn có một đối tượng trade_day chứa chuỗi đều từ bài trước, nhưng chưa có giá trị NA nào được điền.
Bài tập này là một phần của khóa học
Nhập và quản lý dữ liệu tài chính trong R
Hướng dẫn bài tập
- Tạo đối tượng
daily_listbằng cách dùngsplit()để đưa dữ liệutrade_dayvào một danh sách theo từng ngày. - Tiếp theo dùng
lapply()để điền các giá trịNAcho dữ liệu của mỗi ngày trong danh sáchdaily_list. - Cuối cùng, dùng
do.call()vàrbind()để chuyểndaily_filledthành một đối tượng xts duy nhất tên làfilled_by_trade_day.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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, ___)