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