Ich möchte eine Zählerspalte in einem Datenrahmen basierend auf einer Reihe von identischen Zeilen hinzufügen. Um dies zu tun, habe ich das Paket data.table
verwendet. In meinem Fall muss der Vergleich zwischen den Zeilen aus der Kombination der Spalten "z" UND ("x" ODER "y") erfolgen.data.table: "Gruppenzähler" für eine bestimmte Kombination von Spalten
I getestet:
DF[ , Index := .GRP, by = c("x","y","z") ]
aber das Ergebnis ist die Kombination der "z" und "x" und "y".
Wie kann ich die Kombination von "z" UND ("x" ODER "y") haben?
Hier ist ein Datenbeispiel:
DF = data.frame(x=c("a","a","a","b","c","d","e","f","f"), y=c(1,3,2,8,8,4,4,6,0), z=c("M","M","M","F","F","M","M","F","F"))
DF <- data.table(DF)
Ich möchte diese Ausgabe haben:
> DF
x y z Index
1: a 1 M 1
2: a 3 M 1
3: a 2 M 1
4: b 8 F 2
5: c 8 F 2
6: d 4 M 3
7: e 4 M 3
8: f 6 F 4
9: f 0 F 4
FYI, Sie können Ihren Datensatz mit 'data.table' erstellen, ohne' data.frame' zu verwenden. Oder wandeln Sie alternativ Ihre 'data.frame' in eine' data.table' ohne Kopien mit 'setDT' um. Außerdem sollte die gewünschte Ausgabe für Fälle wie "data.table" (x = c ("a", "a", "a"), y = c (1, 1, 2), z = c (" M "," F "," F "))"? –
Für Ihr Beispiel wird 'DF [, Index: = rleid (z)]' funktionieren, aber es berücksichtigt nur "Z" und nicht ("x" ODER "y"). – lmo
Ok, und die Ausgabe für 'data.table (x = c (" b "," a "," a "), y = c (1, 1, 2), z = c (" F "," F "," F "))"? –