R: columna de subconjunto basada en la condición en filas duplicadas

Tengo un marco de datos con una columna de identificación que se repite, con recuentos de sitios. Quiero saber cómo puedo eliminar los registros de ID duplicados solo cuando el registro Site_Count es mayor que 0.

Generar DF:

DF <- data.frame(
    'ID' = sample(100:300, 100, replace=T),
    'Site_count' = sample(0:1, 100, replace=T)
)

Mi intento en el subconjunto:

subset(DF[!duplicated(DF$ID),], site_count > 0)

Pero en este caso eliminará todos los recuentos de sitios 0: quiero subconjunto para eliminar solo el registro cuando hay un registro duplicado con más de 0 recuentos de sitios.

Los resultados deseables se verían así (observe las ID de sitio con 0 recuento de sitios, pero no las ID duplicadas con 0 y otro recuento de sitios):

ID    site count
--    ----------
1        0
2        1
3        1
4        0
5        5

Respuestas a la pregunta(2)

Su respuesta a la pregunta