Eliminar unidades duplicadas del marco de datos

Estoy trabajando en un gran conjunto de datos con n covariables. Muchas de las filas son duplicadas. Para identificar los duplicados necesito usar un subconjunto de las covariables para crear una variable de identificación. Es decir, (n-x) las covariables son irrelevantes. Quiero concatenar los valores en las covariables x para identificar de forma única las observaciones y eliminar los duplicados.

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)

'prueba' es un marco de datos de muestra. Las variables que debo usar para identificar de forma única las observaciones son 'UNIDAD', 'FECHA' y 'OUT1'. Por ejemplo,

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    

Las observaciones 1 y 4 no son un duplicado en el conjunto de datos. Las observaciones 2 y 3 son duplicados. El nuevo conjunto de datos que quiero crear mantendría las observaciones 1 y 4 ysolo uno de 2 y 3. La solución que he probado es:

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

Lo que desafortunadamente no hace el truco:

      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

Aunque ignora las variables irrelevantes (JUNK1, JUNK2), la técnica es demasiado codiciosa. El nuevo conjunto de datos debe contener tres observaciones en la unidad uno porque hay tres combinaciones únicas de UNIT + DATE + OUT1 cuando UNIT = 1. ¿Hay alguna forma de lograr esto sin escribir una función?

Respuestas a la pregunta(3)

Su respuesta a la pregunta