将data.table转换为dplyr:是否有等同于在dplyr上合并之前设置数据表键的功能?

时间:2019-01-21 18:32:32

标签: r data.table tidyverse

我习惯于处理数据表,但后来开始使用更多的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。

0 个答案:

没有答案