verwende tapply und lookup table
%Vor%Der Datensatz enthält drei Variablen: ID, Geschlecht und Grad (Faktor).
%Vor%Für jede ID muss ich sehen, wie viele eindeutige Noten wir haben, und dann eine neue Spalte (Call N) erstellen, um die Notenhäufigkeit zu speichern. Zum Beispiel haben wir für ID = 1 fünf eindeutige Werte für "Note", also N = 4; Für ID = 2 haben wir zwei eindeutige Werte für "Grade", also N = 2; Für ID = 4 haben wir zwei eindeutige Werte für "Grad" (NA ignorieren, also N = 2).
Der endgültige Datensatz ist
%Vor% Sie könnten das Paket data.table
:
Sehr kurz, lesbar und schnell. Es kann auch in Basis-R erfolgen:
%Vor%Da es Diskussionen gab, was schneller ist, sollten wir ein Benchmarking durchführen.
Gegebene Datenmenge:
%Vor%Größerer Datensatz: (10000 Beobachtungen, 1000 IDs)
%Vor% Mit diesem letzten Commit hat uniqueN
ein Argument na.rm
, das wir verwenden können wie folgt:
Dies wird ab der nächsten stabilen Version auf CRAN (v1.9.8) verfügbar sein. Alternativ können Sie auch die aktuelle Devel-Version (v1.9.7) installieren, indem Sie die Anleitung hier befolgen, um es auszuprobieren aus.
Mit data.table könnten Sie dies wie folgt tun:
%Vor%oder:
%Vor%was ergibt:
%Vor% Eine dplyr-Option, die dplyr::n_distinct
und na.rm
-argument verwendet:
Sieht aus, als hätten wir mehrere Stimmen für data.table
, aber Sie könnten auch die Basis-R-Funktion ave()
:
Tags und Links r