J'ai des données comme ça :
library(data.table)
NN = 10000000
set.seed(32040)
DT <- data.table(
col = 1:10000000,
timestamp = 1521872652 + sample(7000001, NN, replace = TRUE)
)
J'essaie d'extraire l'année et la semaine uniques sous forme de code afin de pouvoir trier les doublons (la table de données réelle contient l'ID utilisateur et bien plus encore). I J'ai une solution actuelle qui fonctionne (ci-dessous), mais elle est lente. sur la partie collant les semaines et l'année uniquement à partir de la colonne de date. La création de la date à l'aide de anytime
l'emballage et le tirage week
y year
de lubridate
sont toujours très rapides. Quelqu'un peut-il m'aider à accélérer le processus ? Merci.
Mon code lent (fonctionne mais j'aimerais l'accélérer) :
library(anytime)
library(lubridate)
tz<-"Africa/Addis_Ababa"
DT$localtime<- anytime(DT$timestamp, tz=tz) ###Lightning fast
DT$weekuni <- paste(year(DT$localtime),week(DT$localtime),sep="") ###super slow
Mes tests montrent que c'est le paste
qui me tue :
Très rapide anytime
la conversion en date :
system.time(DT$localtime<- anytime(DT$timestamp, tz=tz)) ###Lightning fast
user system elapsed
0.264 0.417 0.933
Rapidement lubridate
conversion de la semaine et de l'année à partir de la date, mais lente paste
:
> system.time(DT$weekuni1 <- week(DT$localtime)) ###super slow
user system elapsed
1.203 0.188 1.400
> system.time(DT$weekuni2 <- year(DT$localtime))
user system elapsed
1.229 0.189 1.427
> system.time(DT$weekuni <- paste0(DT$weekuni1,dt$weekuni2))
user system elapsed
14.652 0.344 15.483