Re: Anzahl einzelner Ausprägungen abfragen
Verfasst: Do Apr 02, 2020 3:08 pm
Nee, ist doch super, wenn das tidyverse auch vorkommt. Man muss halt dazuschreiben, dass im einen Fall data.table und im anderen Fall dplyr und magrittr (oder das ganze tidyverse) geladen werden muss, weil das halt nicht selbstverständlich bei jedem sowieso geladen ist und nicht selbstverständlich bei jeder Dozentin und jedem Kommilitonen sowieso auf dem Rechner installiert ist.
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?
Das ist jetzt ein bisschen unfair gegenüber base, weil table als Einziges die Antworten sortiert, aber die haben ja auch keine andere Option programmiert. Ergebnis:
LG,
Bernhard
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