Ich habe einen Datenframe namens user_role, wo es einen Schlüsselwert (userid) gibt. Ich möchte sehen, wie viele dieser Benutzer-IDs nur einen Wert für eine kategorische Variable namens role haben.R wie finde ich, wie viele Benutzer nur einen Wert haben
Hier einige Beispieldaten:
userid role
ame1 programmer
ame1 programmer
ame1 analyst
cal5 programmer
cal5 programmer
up2 sales
Ich würde cal5 wie in der Ausgabe-Dataset zu sein, weil es nur eine Rolle war aber ame1 sollte nicht in dem Ausgangsdatenrahmen, da es mehr als eine Rolle Wert hatte .
Ich habe so etwas wie dies versucht:
("select userid, role, count(*) from user_role group by userid, role having count(*) == 1")
aber nur mit 1 Reihe oder Rollenwert Benutzer erhalten.
("select userid, role, count(*) from user_role group by userid, role having count(*) > 1")
bekommt mir solche mit einer Rolle nicht nur Wert, obwohl sie in der Ausgabe sowohl cal5 und up2 zeigen mehrere Zeilen
Ich möchte haben müssen. Idealerweise hätte ich gerne eine Klausel, bei der ich nur Benutzer mit 2 oder mehr Zeilen einschließen würde.
Dank
Ihre letzte Bemerkung gleich sind verwirrt mich. Ursprünglich dachte ich, du wolltest nur "count (distinct role)", aber dann nennst du 2 oder mehr Zeilen, die "up2" korrekt ausschließen würden? – sgeddes
Ja, es wäre großartig, wenn ich eine Mindestzahl von Zeilen angeben könnte, die eine Person im Ausgabedatenrahmen enthalten müsste. Hilft das? Aber sie müssten immer noch nur einen Wert von mindestens zwei Zeilen haben. – Jazzmine
'table (unique (df1) $ userid)' gibt Ihnen die Anzahl der eindeutigen 'role's pro Benutzer' userid'. Oder mit 'data.table' könnten Sie die Bedingungen' library (data.table); setDT (df1) [, if (uniqueN (role) == 1 & .N> 1) .SD, by = Benutzer-ID] ' –