У меня есть набор данных, который составляет 60 миллионов строк, и я хочу вычислить сравнение для каждой строки. Это простая разница во времени между двумя метками времени. Для оценки времени выполнения я выполнил расчет на 1 миллион строк, и это заняло почти 2 минуты. Я надеюсь, что есть более быстрый путь.
Вот некоторые примеры данных.
library(data.table)
DT <- fread( 'unique_id,click_time,click_time2
100005361,2017-11-09 03:58:32,2017-11-09 03:59:33
100005372,2017-11-09 00:53:08,2017-11-09 00:53:40
100005373,2017-11-09 04:38:52,2017-11-09 04:38:53
100005374,2017-11-09 05:42:30,2017-11-09 05:44:30' )
Это основной показатель, который я хочу вычислить:
DT$click_diff = difftime(DT$click_time,DT$click_time2,units=c("secs"))
Если я просто запустлю это, я думаю, что это займет часы за часами, поэтому я попытался использовать пакет foreach (), но, думаю, я ошибаюсь.
library(doParallel)
library(foreach)
cl <- makeCluster(parallel::detectCores()-1)
registerDoParallel(cl) #create a cluster
r <- foreach(i=1:nrow(DT) %dopar% {
results[i] = difftime(DT$click_time[i],DT$click_time_2[i],units=c("secs"))
return(data.frame(results))
}
parallel::stopCluster(cl)
Кластеры определенно настроены, но ничего не происходит. У кого-нибудь есть советы, как исправить этот код или, возможно, другой способ ускорить расчет разницы во времени для большого набора данных?