Como posso combinar linhas no mesmo quadro de dados em R (com base em valores duplicados em uma coluna específica)?

Amostra de 2 linhas de exemplo (compostas) em df:

userid   facultyid  courseid schoolid
167       265        NA       1678  
167       71111      301      NA

Suponha que eu tenha algumas centenas de IDs de usuário duplicadas, como no exemplo acima. No entanto, a grande maioria dos IDs de usuários tem valores diferentes.

Como combinar linhas com o ID do usuário duplicado de forma a manter os valores da coluna na 1ª (da 2) linha, a menos que o primeiro valor seja NA (nesse caso, o NA será repovoado com o valor que vier da segunda linha)?

Em essência, partindo do exemplo acima, minha saída ideal conteria:

userid   facultyid  courseid schoolid
167       265        301       1678  

questionAnswers(4)

yourAnswerToTheQuestion