Перевод data.table в dplyr: есть ли что-то эквивалентное установке ключей таблицы данных перед слиянием на dplyr? - PullRequest
0 голосов
/ 21 января 2019

Я привык работать с таблицей данных, но перешел на использование большего количества 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.

...