CommencerCommencer gratuitement

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

Afficher le cours

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
___
Modifier et exécuter le code