Chọn cột từ một data.table

Xử lý dữ liệu với data.table trong R

Matt Dowle, Arun Srinivasan

Instructors, DataCamp

Cú pháp tổng quát của data.table (Ôn tập)

Đối số thứ hai j dùng để chọn (và tính toán trên) các cột

# Cú pháp tổng quát của data.table
DT[i, j, by]
   |  |  |
   |  |  --> nhóm theo gì?
   |  -----> làm gì?
   --------> trên những hàng nào?
Xử lý dữ liệu với data.table trong R

Dùng tên cột để chọn cột

Đối số j nhận một vector ký tự của tên cột

ans <- batrips[, c("trip_id", "duration")]
head(ans, 2)
trip_id duration
139545      435
139546      432
Xử lý dữ liệu với data.table trong R

Dùng tên cột để chọn cột

batrips_df <- as.data.frame(batrips)
ans <- batrips_df[, "trip_id"]
head(ans, 2)
# Kết quả là một vector, không phải data.frame
139545, 139546
ans <- batrips[, "trip_id"]
# Vẫn là một data.table, không phải vector
head(ans, 2) 
trip_id
139545
139546
Xử lý dữ liệu với data.table trong R

Dùng số thứ tự cột thay cho tên cột vẫn ổn

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

Tuy nhiên, đây là một thực hành không tốt

# Nếu thứ tự cột thay đổi, kết quả sẽ sai
batrips[, c(2, 4)]

# Luôn đúng, bất kể thứ tự cột
batrips[, c("duration", "start_station")]
Xử lý dữ liệu với data.table trong R

Bỏ chọn cột với vector ký tự

  • -c("col1", "col2", ...) bỏ chọn các cột chỉ định
  • Tính năng tiện lợi chỉ có trong data.table
  • Dùng ! thay cho - cũng tương tự
# Chọn tất cả cột TRỪ các cột dưới đây
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
Xử lý dữ liệu với data.table trong R

Chọn cột theo kiểu data.table

Bạn nhớ ở chương trước các cột được dùng như biến trong đối số i chứ?

# Ôn tập đối số "i"
# Tất cả chuyến đi hơn một giờ
batrips[duration > 3600]

Tương tự, bạn có thể dùng một danh sách biến (tên cột) để chọn cột

ans <- batrips[, list(trip_id, dur = duration)]
head(ans, 2)
trip_id     dur
139545      435
139546      432
Xử lý dữ liệu với data.table trong R

Khi chọn một cột, không bọc biến bằng list() sẽ trả về vector

# Chọn một cột và trả về data.table
ans <- batrips[, list(trip_id)]
head(ans ,2)
trip_id
139545
139546
# Chọn một cột và trả về vector
ans <- batrips[, trip_id]
head(ans, 2)
139545 139546
Xử lý dữ liệu với data.table trong R

Chọn cột theo kiểu data.table

.() là bí danh của list() để tiện dùng

# .() giống hệt list()
ans <- batrips[, .(trip_id, duration)]
head(ans, 2)
trip_id duration
139545      435
139546      432
Xử lý dữ liệu với data.table trong R

Cùng luyện tập nào!

Xử lý dữ liệu với data.table trong R

Preparing Video For Download...