Entfernen doppelter Einheiten aus dem Datenrahmen

Ich arbeite an einem großen Datensatz mit n Kovariaten. Viele der Zeilen sind Duplikate. Um die Duplikate zu identifizieren, muss eine Teilmenge der Kovariaten verwendet werden, um eine Identifikationsvariable zu erstellen. Das heißt, (n-x) Kovariaten sind irrelevant. Ich möchte die Werte auf den x-Kovariaten verketten, um die Beobachtungen eindeutig zu identifizieren und die Duplikate zu beseitigen.

set.seed(1234)
UNIT <- c(1,1,1,1,2,2,2,3,3,3,4,4,4,5,6,6,6)
DATE <- c("1/1/2010","1/1/2010","1/1/2010","1/2/2012","1/2/2009","1/2/2004","1/2/2005","1/2/2005",
      "1/1/2011","1/1/2011","1/1/2011","1/1/2009","1/1/2008","1/1/2008","1/1/2012","1/1/2013",
      "1/1/2012")
OUT1 <- c(300,400,400,400,600,700,700,800,800,800,900,700,700,100,100,100,500)
JUNK1 <- c(rnorm(17,0,1))
JUNK2 <- c(rnorm(17,0,1))

test = data.frame(UNIT,DATE,OUT1,JUNK1,JUNK2)

'test' ist ein Beispieldatenrahmen. Die Variablen, mit denen ich die Beobachtungen eindeutig identifizieren muss, sind 'UNIT', 'DATE' und 'OUT1'. Zum Beispiel,

head(test)
  UNIT     DATE OUT1      JUNK1      JUNK2
1    1 1/1/2010  300 -1.2070657 -0.9111954
2    1 1/1/2010  400  0.2774292 -0.8371717
3    1 1/1/2010  400  1.0844412  2.4158352
4    1 1/2/2012  400 -2.3456977  0.1340882
5    2 1/2/2009  600  0.4291247 -0.4906859
6    2 1/2/2004  700  0.5060559 -0.4405479    

Die Beobachtungen 1 und 4 sind kein Duplikat im Datensatz. Die Beobachtungen 2 und 3 sind Duplikate. Der neue Datensatz, den ich erstellen möchte, behält die Beobachtungen 1 und 4 undeinziger von 2 und 3. Die Lösung, die ich versucht habe, ist:

subset(test, !duplicated(c(UNIT,DATE,OUT1)))

Was leider nicht geht:

      UNIT     DATE OUT1       JUNK1      JUNK2
1        1 1/1/2010  300 -1.20706575 -0.9111954
5        2 1/2/2009  600  0.42912469 -0.4906859
8        3 1/2/2005  800 -0.54663186 -0.6937202
11       4 1/1/2011  900 -0.47719270 -1.0236557
14       5 1/1/2008  100  0.06445882  1.1022975
15       6 1/1/2012  100  0.95949406 -0.4755931

Obwohl die irrelevanten Variablen (JUNK1, JUNK2) ignoriert werden, ist die Technik zu gierig. Der neue Datensatz sollte drei Beobachtungen zu Einheit 1 enthalten, da es drei eindeutige Kombinationen von EINHEIT + DATUM + AUSGANG1 gibt, wenn EINHEIT = 1. Gibt es eine Möglichkeit, dies zu erreichen, ohne eine Funktion zu schreiben?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage