Giả sử tôi có một bảng dữ liệu chứa một số cầu thủ bóng chày:tập hợp con của nhóm với data.table
library(plyr)
library(data.table)
bdt <- as.data.table(baseball)
Đối với mỗi người chơi (do id), tôi muốn tìm các hàng tương ứng với năm, trong đó họ chơi nhiều trò chơi nhất. Điều này rất đơn giản trong plyr:
ddply(baseball, "id", subset, g == max(g))
Mã tương đương cho dữ liệu là gì?
tôi đã cố gắng:
setkey(bdt, "id")
bdt[g == max(g)] # only one row
bdt[g == max(g), by = id] # Error: 'by' or 'keyby' is supplied but not j
bdt[, .SD[g == max(g)]] # only one row
này hoạt động:
bdt[, .SD[g == max(g)], by = id]
Nhưng nó là nhanh hơn so với plyr chỉ có 30%, cho thấy nó có lẽ không phải thành ngữ.
Ồ, chậm, nhưng nếu bạn sử dụng "năm" thay cho ".SD" ... tôi nhận được 0,01, 1,58, 2,39 thời gian của người dùng trong năm, .SD, plyr, tương ứng. – Frank
@Frank nhưng tôi muốn toàn bộ khung dữ liệu, không chỉ trong năm. Tôi sẽ làm rõ câu hỏi. – hadley