Välja kolumner från en data.table

Datamanipulering med data.table i R

Matt Dowle, Arun Srinivasan

Instructors, DataCamp

Allmän form för data.table-syntax (Sammanfattning)

Det andra argumentet j används för att välja (och beräkna på) kolumner

# Allmän form för data.table-syntax
DT[i, j, by]
   |  |  |
   |  |  --> grupperat efter vad?
   |  -----> vad ska göras?
   --------> på vilka rader?
Datamanipulering med data.table i R

Välja kolumner med kolumnnamn

Argumentet j tar emot en teckenvektorvektor med kolumnnamn

ans <- batrips[, c("trip_id", "duration")]
head(ans, 2)
trip_id duration
139545      435
139546      432
Datamanipulering med data.table i R

Välja kolumner med kolumnnamn

batrips_df <- as.data.frame(batrips)
ans <- batrips_df[, "trip_id"]
head(ans, 2)
# The result is a vector, not a data.frame
139545, 139546
ans <- batrips[, "trip_id"]
# Still a data.table, not a vector
head(ans, 2) 
trip_id
139545
139546
Datamanipulering med data.table i R

Kolumnnummer fungerar lika bra som namn

ans <- batrips[, c(2, 4)]
head(ans, 2)
duration  start_station
435       San Francisco City Hall
432       San Francisco City Hall

Detta betraktas dock som dålig praxis

# If the order of columns changes, the result is wrong
batrips[, c(2, 4)]

# The result is always correct, no matter the order
batrips[, c("duration", "start_station")]
Datamanipulering med data.table i R

Avmarkera kolumner med teckenvektorer

  • -c("col1", "col2", ...) avmarkerar de angivna kolumnerna
  • Bekvämlighetsfeature enbart i data.table
  • ! fungerar på samma sätt som -
# Välj alla kolumner *utom* de som visas nedan
ans <- batrips[, -c("start_date", "end_date", "end_station")]
head(ans, 1)
trip_id  duration  start_station             start_terminal  bike_id  end_terminal
139545   435       San Francisco City Hall   58              65       473 

subscription_type  zip_code
Subscriber         94612
Datamanipulering med data.table i R

Välja kolumner på data.table-sättet

Minns du hur kolumner användes som variabler i argumentet i i förra kapitlet?

# Recap the "i" argument
# All trips more than an hour
batrips[duration > 3600]

På samma sätt kan du använda en lista med variabler (kolumnnamn) för att välja kolumner

ans <- batrips[, list(trip_id, dur = duration)]
head(ans, 2)
trip_id     dur
139545      435
139546      432
Datamanipulering med data.table i R

När en enskild kolumn väljs utan att omsluta variabeln med list() returneras en vector

# Select a single column and return a data.table
ans <- batrips[, list(trip_id)]
head(ans ,2)
trip_id
139545
139546
# Select a single column and return a vector
ans <- batrips[, trip_id]
head(ans, 2)
139545 139546
Datamanipulering med data.table i R

Välja kolumner på data.table-sättet

.() är ett alias för list(), av bekvämlighetsskäl

# .() is the same as list()
ans <- batrips[, .(trip_id, duration)]
head(ans, 2)
trip_id duration
139545      435
139546      432
Datamanipulering med data.table i R

Nu kör vi en övning!

Datamanipulering med data.table i R

Preparing Video For Download...