Xử lý dữ liệu với data.table trong R
Matt Dowle and Arun Srinivasan
Instructors, DataCamp
Đối số đầu tiên i dùng để chọn hoặc lọc hàng
# Cú pháp tổng quát của data.table
DT[i, j, by]
| | |
| | --> nhóm theo gì?
| -----> làm gì?
--------> trên hàng nào?
# Lấy hàng thứ 3 và 4 từ batrips
batrips[3:4]
# Tương đương
batrips[3:4, ]
# Lấy tất cả trừ 5 hàng đầu
batrips[-(1:5)]
# Tương đương
batrips[!(1:5)]
.N là một số nguyên biểu thị số hàng trong data.tablenrow(x) trong i nrow(batrips)
326339
batrips[326339]
trip_id duration
588914 364
# Trả về hàng cuối cùng
batrips[.N]
trip_id duration
588914 364
# Trả về tất cả trừ 10 hàng cuối
ans <- batrips[1:(.N-10)]
nrow(ans)
326329
# Lọc hàng có subscription_type là "Subscriber"
batrips[subscription_type == "Subscriber"]
# Nếu batrips chỉ là data frame
batrips[batrips$subscription_type == "Subscriber", ]
# Lọc hàng có start_terminal = 58 và end_terminal khác 65
batrips[start_terminal == 58 & end_terminal != 65]
# Nếu batrips chỉ là data frame
batrips[batrips$start_terminal == 58 & batrips$end_terminal != 65]
Tự động tối ưu bằng chỉ mục thứ cấp để tăng tốc
set.seed(1)
dt <- data.table(x = sample(10000, 10e6, TRUE),
y = sample(letters, 1e6, TRUE))
indices(dt)
NULL
# 0.207s ở lần chạy đầu
#(thời gian tạo chỉ mục + lọc)
system.time(dt[x == 900])
user system elapsed
0.207 0.015 0.226
indices(dt)
"x"
# 0.002s ở các lần sau
#(lọc tức thì nhờ chỉ mục)
system.time(dt[x == 900])
user system elapsed
0.002 0.000 0.002
Xử lý dữ liệu với data.table trong R