Segue um exemplo, veja se é isso que você quer fazer.
PROCESSO<-c("5.157.658-4","5.155.855-8","5.153.696-8","5.153.696-8","5.154.220-6",NA,NA,NA,"5.155.401-1","5.155.960-6",NA,"5.157.157-7","5.157.658-4","5.157.658-4")
dados<-data.frame(Coluna1=NA,PROCESSO,Coluna3=NA)
###OS dados devem estar assim, note que eu adicionei uns 3 casos duplicadas aos dados
dados
###Denovo fazemos um indice, mas vamos querer saber quem não é vaziu, note que o ! inverte a saida do
is.navaziu<-!
is.na(dados$PROCESSO)
###E encontramos os duplicados com a função duplicated, note o que ela faz no exemplo
duplicated(c(1,1,2,3))
duplicado<-duplicated(dados$PROCESSO)
###Agora é so fazer um teste logico, pegar quem não é vaziu e é duplicado
indice<-which(!(vaziu & duplicado))
##Agora é so usar o indice para preencher a coluna
dados_semcopias<-dados[indice,]
dados_semcopias