Lire des blocs en tant que data.frame
Dans l’exemple précédent, nous avons lu chaque bloc dans la fonction de traitement sous forme de matrice avec mstrsplit(). Cela convient pour des données rectangulaires où le type d’élément est identique dans chaque colonne. Quand ce n’est pas le cas, il peut être préférable de lire les données en tant que data.frame. Vous pouvez soit lire un bloc en tant que matrice puis le convertir en data.frame, soit utiliser la fonction dstrsplit().
Cet exercice fait partie du cours
Traitement de données à grande échelle en R
Instructions
- Dans la fonction
make_msa_table(), lisez chaque bloc sous forme de data frame. - Appelez
chunk.apply()pour lire les données par blocs. - Obtenez les totaux de chaque colonne en additionnant toutes les lignes.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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
___