Kom igångKom igång gratis

Läsa in segment som en data.frame

I det föregående exemplet läste vi in varje segment som en matris med hjälp av mstrsplit(). Det fungerar bra när vi läser in rektangulär data där alla element i varje kolumn är av samma typ. När så inte är fallet kan det vara bättre att läsa in data som en data.frame. Det går antingen att läsa in ett segment som en matris och sedan konvertera det till en data.frame, eller att använda funktionen dstrsplit() direkt.

Den här övningen är en del av kursen

Skalbar databehandling i R

Visa kurs

Övningsinstruktioner

  • I funktionen make_msa_table(), läs in varje segment som en data frame.
  • Anropa chunk.apply() för att läsa in data i segment.
  • Beräkna totalsumman för varje kolumn genom att summera alla rader.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
___
Redigera och kör kod