Seite 1 von 2

Anzahl einzelner Ausprägungen abfragen

Verfasst: Mi Apr 01, 2020 8:01 pm
von rforum1236
Hallo Zusammen,

ich habe einen großen Datensatz mit vielen Postleitzahlen.
Mit welchem Befehl kann ich abfragen, wie oft eine bestimmte Postleitzahl vorkommt?

Bsp: "44145", "33562", "66745", "44145" -> Wie oft kommt die "44145" vor, wie oft die "33562"... , sodass mir 2,1,... ausgegeben werden.

Ich hoffe mir kann jemand helfen.

Gruß

Re: Anzahl einzelner Ausprägungen abfragen

Verfasst: Mi Apr 01, 2020 8:13 pm
von student
Hallo,

schau Dir mal das Paket doBy und hier vielleicht die Funktion summaryBy an.

Re: Anzahl einzelner Ausprägungen abfragen

Verfasst: Mi Apr 01, 2020 8:21 pm
von jogo
Hallo rforum1236,

willkommen im Forum!

Code: Alles auswählen

table(DeinDataframe$PLZ)
Gruß, Jörg

Re: Anzahl einzelner Ausprägungen abfragen

Verfasst: Mi Apr 01, 2020 8:27 pm
von rforum1236
Hallo Jörg,

vielen Dank für die schnelle Antwort. Ich bräuchte aber die Anzahl der jeweiligen PLZ als numerischen Wert, um daraus einen eigenen Vektor zu machen.
Hast du dafür zufällig auch eine Lösung?

Gruß.Hendrik

Re: Anzahl einzelner Ausprägungen abfragen

Verfasst: Mi Apr 01, 2020 8:31 pm
von jogo
Hallo Hendrik,

Code: Alles auswählen

PLZ <- rep(c("44145", "33562", "66745", "44145"), c(4, 2, 5, 9)) 
table(PLZ)
anz <- table(PLZ)
str(as.numeric(anz))
as.data.frame(anz)
Gruß, Jörg
p.s.:
Es ist an Dir, ein reproduzierbares Beispiel zu liefern ... beim nächsten Mal.
viewtopic.php?f=20&t=11

Re: Anzahl einzelner Ausprägungen abfragen

Verfasst: Mi Apr 01, 2020 8:55 pm
von rforum1236
Hallo Jörg,

vielen vielen Dank für die schnelle Hilfe!
Bei meiner zweiten Frage wird es besser, versprochen :D

Einen schönen Abend wünsche ich weiterhin.
Hendrik

Re: Anzahl einzelner Ausprägungen abfragen

Verfasst: Do Apr 02, 2020 8:45 am
von Athomas
Wenn es um größere Datenmengen geht, sollte man data.table nicht vergessen.
In dem Beispiel unten werden 1 Mio PLZ ausgewertet - so schnell, dass Ihr an einen Fehler glauben werdet :) :

Code: Alles auswählen

library(data.table)
N           <- 1000000
PLZ.str     <- sprintf("%05d", 1010:9999)
Verzeichnis <- data.table(Adressnummer=paste0("A", sprintf("%08d", 1:N)), PLZ=sample(PLZ.str, N, replace=TRUE))
Anzahl      <- Verzeichnis[  , .N, by = PLZ]

Re: Anzahl einzelner Ausprägungen abfragen

Verfasst: Do Apr 02, 2020 9:07 am
von bigben
@Athomas Ohne nachzumessen glaube ich Dir, wenn Du sagst, dass data.table schneller ist. "In der Console spürbar" ist der Geschwindigkeitsunterschied zwischen den beiden Varianten

Code: Alles auswählen

Anzahl <- Verzeichnis[  , .N, by = PLZ]
Anzahl.t <- table(Verzeichnis$PLZ)
nicht. Und bei table erhalte ich die PLZ schön alphabetisch sortiert zurück. Ich glaube, mit 1 Mio bist Du noch nicht im kritischen Bereich bzw. die Vorteile liegen da noch nicht in der Geschwindigkeit.

LG,
Bernhard

Re: Anzahl einzelner Ausprägungen abfragen

Verfasst: Do Apr 02, 2020 9:41 am
von Athomas
Ich glaube, mit 1 Mio bist Du noch nicht im kritischen Bereich bzw. die Vorteile liegen da noch nicht in der Geschwindigkeit.
Da hast Du natürlich recht, ich hatte table() erheblich träger in Erinnerung :) !

Re: Anzahl einzelner Ausprägungen abfragen

Verfasst: Do Apr 02, 2020 12:51 pm
von ruppy
Alternativ mit count:

Code: Alles auswählen

Verzeichnis %>% count(PLZ, sort = TRUE)
jaja ich weiß...tidyverse :D