col_types met collectors
Een andere manier om de types van de geïmporteerde kolommen in te stellen is met collectors. Collector-functies kun je in een list() meegeven aan het argument col_types van read_-functies om aan te geven hoe waarden in een kolom geïnterpreteerd moeten worden.
Voor een volledige lijst met collector-functies kun je de documentatie van collector bekijken. Voor deze oefening heb je twee collector-functies nodig:
col_integer(): de kolom moet als integer worden geïnterpreteerd.col_factor(levels, ordered = FALSE): de kolom moet als factor metlevelsworden geïnterpreteerd.
In deze oefening werk je met hotdogs.txt (view), een tab-gescheiden bestand zonder kolomnamen in de eerste rij.
Deze oefening maakt deel uit van de cursus
Introductie tot het importeren van data in R
Oefeninstructies
hotdogsis voor je aangemaakt zonder de kolomtypes in te stellen. Bekijk de samenvatting met de functiesummary().- Er zijn twee collector-functies voor je gedefinieerd:
facenint. Kijk ernaar; begrijp je wat ze verzamelen? - Bewerk in de tweede aanroep van
read_tsv()het argumentcol_types: Geef eenlist()door met de elementenfac,intenint, zodat de eerste kolom als factor wordt geïmporteerd en de tweede en derde kolom als integers. - Maak een
summary()vanhotdogs_factor. Vergelijk deze met de samenvatting vanhotdogs.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Import without col_types
hotdogs <- read_tsv("hotdogs.txt", col_names = c("type", "calories", "sodium"))
# Display the summary of hotdogs
___
# The collectors you will need to import the data
fac <- col_factor(levels = c("Beef", "Meat", "Poultry"))
int <- col_integer()
# Edit the col_types argument to import the data correctly: hotdogs_factor
hotdogs_factor <- read_tsv("hotdogs.txt",
col_names = c("type", "calories", "sodium"),
col_types = NULL)
# Display the summary of hotdogs_factor
___