Зчитування фрагментів як data.frame
У попередньому прикладі ми передавали кожен фрагмент у функцію обробки як матрицю за допомогою mstrsplit(). Це підходить, коли ми читаємо прямокутні дані, де тип елемента в кожному стовпці однаковий. Коли це не так, зручніше зчитувати дані як data.frame. Це можна зробити або зчитавши фрагмент як матрицю та потім перетворивши його на data.frame, або скориставшись функцією dstrsplit().
Ця вправа є частиною курсу
Масштабована обробка даних в R
Інструкції до вправи
- У функції
make_msa_table()зчитайте кожен фрагмент як датафрейм. - Викличте
chunk.apply()для зчитування даних фрагментами. - Отримайте загальні підсумки для кожного стовпця, підсумувавши всі рядки.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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
___