CommencezCommencez gratuitement

Lire des blocs sous forme de data.frame

Dans l'exemple précédent, nous avons lu chaque bloc dans la fonction de traitement sous forme de matrice à l'aide de mstrsplit(). Cela convient lorsque nous lisons des données rectangulaires où le type d'élément est le même dans chaque colonne. Lorsque ce n'est pas le cas, il peut être préférable de lire les données sous forme de data.frame. On peut le faire soit en lisant un bloc comme une matrice puis en le convertissant en data.frame, soit en utilisant la fonction dstrsplit().

Cette activité fait partie du cours

Traitement de données évolutif en R

Voir le cours

Instructions de l’exercice

  • 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 le total de chaque colonne en additionnant toutes les lignes.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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