我习惯于处理数据表,但后来开始使用更多的dplyr。在data.table上,如果在合并两个数据表之前设置了数据键,则合并会快得多。加入dplyr是否有与之等效的东西?
library(tidyverse)
band_members_dt <- data.table::as.data.table(band_members)
band_instruments_dt <- data.table::as.data.table(band_instruments)
system.time({
data.table::setkey(band_members_dt, name)
data.table::setkey(band_instruments_dt, name)
dt_merge <- merge(band_members_dt, band_instruments_dt,
by = data.table::key(band_members_dt), all.x = T)
})
# user system elapsed
# 0.004 0.000 0.003
system.time({
tbl_join <- band_members %>%
left_join(band_instruments)
})
# user system elapsed
# 0.05 0.00 0.05
显然,对于较小的数据集,差异不大,但是我正在处理数百万行的数据,而且差异可能会变得非常大,尤其是当您将多个较小的数据表合并成多个数据时一个大的。我会处理data.table,除了团队的其他成员更喜欢dplyr,而且还计划使用Spark。