Dies ist ein Beispiel-Datentabelle:r data.table - Gruppen ausschließen, die bestimmte Werte in Zeilen enthalten
set.seed(100)
> A <- data.table(a = sample(c('x','c','y',''),10, replace = T), b = sample(as.Date(c('2008-12-31','2012-12-31','2013-12-31','2014-12-31','2016-12-31')),10, replace = T) , c = runif(10) )
> A
a b c
1: c 2014-12-31 0.5358112
2: c 2016-12-31 0.7108038
3: y 2012-12-31 0.5383487
4: x 2012-12-31 0.7489722
5: c 2014-12-31 0.4201015
6: c 2014-12-31 0.1714202
7: 2012-12-31 0.7703016
8: c 2012-12-31 0.8819536
9: y 2012-12-31 0.5490967
10: x 2014-12-31 0.2777238
Spalte A enthält entweder x, y, c, oder leer ist. Ich möchte nach 'b' gruppieren und aus der Datentabelle alle Gruppen ausschließen, die mindestens ein X UND mindestens ein C in jeder Zeile der Gruppe enthalten. Die Reihenfolge, in der X und C erscheinen, ist nicht wichtig.
In dem obigen Beispiel Gruppe 2014.12.31 "eliminiert werden, weil es c und x (Zeilen 1,5,6,10) enthält. Dasselbe gilt für die Gruppe '2012-12-31'. Allerdings Gruppe ‚2016.12.31‘ bleiben, weil, während es eine C hat, ist es kein X. hat
Mein Ansatz war bisher:
A[ , .(a) ,by = .(b)][ !(a %in% c('x','c')) ]
Aber ich glaube, dass dies alles würde entfernen die Zeilen mit 'x' ODER 'c'. Ich bin daran interessiert, nur diejenigen mit mindestens einem X und einem C gleichzeitig zu entfernen.
Danke,
Könnten Sie Ergebnis für dieses Beispiel zeigen gewünscht? Ihre Klausel "und die andere, in der x und c erscheinen, ist nicht wichtig." ist mir ohne es nicht klar. – Frank
Der Beispieldatensatz ist nicht eindeutig, da Sie vergessen haben, 'set.seed()' aufzurufen. –
Danke. Ich wollte sagen, „die Ordnung x, in dem und c erscheinen nicht wichtig ist“ – dleal