Đọc các khối dữ liệu (chunk) dưới dạng data.frame
Trong ví dụ trước, bạn đã đọc từng khối dữ liệu vào hàm xử lý dưới dạng ma trận bằng mstrsplit(). Cách này phù hợp khi dữ liệu có dạng hình chữ nhật và kiểu phần tử trong mỗi cột đều giống nhau. Khi không phải vậy, bạn có thể muốn đọc dữ liệu dưới dạng data.frame. Việc này có thể thực hiện bằng cách đọc một khối vào dưới dạng ma trận rồi chuyển đổi sang data.frame, hoặc bạn có thể dùng hàm dstrsplit().
Bài tập này là một phần của khóa học
Xử lý dữ liệu có khả năng mở rộng trong R
Hướng dẫn bài tập
- Trong hàm
make_msa_table(), hãy đọc mỗi khối dưới dạng data frame. - Gọi
chunk.apply()để đọc dữ liệu theo từng khối. - Lấy tổng số đếm cho mỗi cột bằng cách cộng tất cả các hàng.
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.
# Define the function to apply to each chunk
make_msa_table <- function(chunk) {
# Read each chunk as a data frame
x <- ___(chunk, col_types = rep("integer", length(col_names)), sep = ",")
# Set the column names of the data frame that's been read
colnames(x) <- col_names
# Create new column, msa_pretty, with a string description of where the borrower lives
x$msa_pretty <- msa_map[x$msa + 1]
# Create a table from the msa_pretty column
table(x$msa_pretty)
}
# Create a file connection to mortgage-sample.csv
fc <- file("mortgage-sample.csv", "rb")
# Read the first line to get rid of the header
readLines(fc, n = 1)
# Read the data in chunks
counts <- ___(fc, ___, CH.MAX.SIZE = 1e5)
# Close the file connection
close(fc)
# Aggregate the counts as before
___