Вибір стовпців у data.table

Опрацювання даних із data.table в R

Matt Dowle, Arun Srinivasan

Instructors, DataCamp

Загальна форма синтаксису data.table (повторення)

Другий аргумент j використовують, щоб вибирати стовпці (і обчислювати їх)

# Загальна форма синтаксису data.table
DT[i, j, by]
   |  |  |
   |  |  --> за якими групувати?
   |  -----> що робити?
   --------> по яких рядках?
Опрацювання даних із data.table в R

Вибір стовпців за назвами

Аргумент j приймає символьний вектор назв стовпців

ans <- batrips[, c("trip_id", "duration")]
head(ans, 2)
trip_id duration
139545      435
139546      432
Опрацювання даних із data.table в R

Вибір стовпців за назвами

batrips_df <- as.data.frame(batrips)
ans <- batrips_df[, "trip_id"]
head(ans, 2)
# Результат — вектор, не data.frame
139545, 139546
ans <- batrips[, "trip_id"]
# Досі data.table, не вектор
head(ans, 2) 
trip_id
139545
139546
Опрацювання даних із data.table в R

Номери стовпців замість назв теж працюють

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

Проте це вважається поганою практикою

# Якщо порядок стовпців зміниться, результат буде хибний
batrips[, c(2, 4)]

# Результат завжди коректний, незалежно від порядку
batrips[, c("duration", "start_station")]
Опрацювання даних із data.table в R

Зняття вибору стовпців символьними векторами

  • -c("col1", "col2", ...) скасовує вибір указаних стовпців
  • Зручність, доступна лише в data.table
  • Використання ! замість - працює так само
# Виберіть усі стовпці, *крім* наведених нижче
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
Опрацювання даних із data.table в R

Вибір стовпців у стилі data.table

Пам'ятаєте, як у минулому розділі стовпці використовувалися як змінні в аргументі i?

# Повторимо аргумент "i"
# Усі поїздки довші за годину
batrips[duration > 3600]

Так само можна використати список змінних (назви стовпців), щоб вибрати стовпці

ans <- batrips[, list(trip_id, dur = duration)]
head(ans, 2)
trip_id     dur
139545      435
139546      432
Опрацювання даних із data.table в R

Якщо обрати один стовпець без обгортки list(), повертається vector

# Вибрати один стовпець і повернути data.table
ans <- batrips[, list(trip_id)]
head(ans ,2)
trip_id
139545
139546
# Вибрати один стовпець і повернути вектор
ans <- batrips[, trip_id]
head(ans, 2)
139545 139546
Опрацювання даних із data.table в R

Вибір стовпців у стилі data.table

.() — це псевдонім list() для зручності

# .() те саме, що list()
ans <- batrips[, .(trip_id, duration)]
head(ans, 2)
trip_id duration
139545      435
139546      432
Опрацювання даних із data.table в R

Давайте потренуємось!

Опрацювання даних із data.table в R

Preparing Video For Download...