Unsicher bin ich mir, ob wir jetzt, da eine data.table und eine tidyverse-Version auf dem Tisch liegen doch juristisch gezwungen sind, einen Geschwindigkeitsvergleich zu machen?
Code: Alles auswählen
library(microbenchmark)
library(data.table)
library(dplyr)
library(magrittr)
N <- 1000000
PLZ.str <- sprintf("%05d", 1010:9999)
Verzeichnis.df <- data.frame(Adressnummer=paste0("A", sprintf("%08d", 1:N)), PLZ=sample(PLZ.str, N, replace=TRUE))
Verzeichnis.dt <- as.data.table(Verzeichnis.df)
Verzeichnis.ti <- as_tibble(Verzeichnis.df)
mb <- microbenchmark(Anzahl <- table(Verzeichnis.df$PLZ),
Anzahl <- Verzeichnis.dt[ , .N, by = PLZ],
Anzahl <- Verzeichnis.ti%>% count(PLZ),
times = 1000L, unit="ms")
Code: Alles auswählen
> mb
Unit: milliseconds
expr min lq mean median uq max neval cld
Anzahl <- table(Verzeichnis.df$PLZ) 15.8329 20.22430 32.54471 22.14340 44.63535 303.4359 1000 a
Anzahl <- Verzeichnis.dt[, .N, by = PLZ] 23.0289 27.22180 35.02325 28.58875 30.81735 344.5909 1000 b
Anzahl <- Verzeichnis.ti %>% count(PLZ) 44.0943 49.46985 53.72740 51.74315 54.60770 324.2127 1000 c
Bernhard