Gabarito disponível
Resolução comentada
inner_join mantém apenas os registros presentes nas duas tabelas.
No dplyr, inner_join(df1, df2) une as tabelas pela coluna em comum (ID) e retorna somente as linhas com correspondência em ambas. Isso é o que a questão pede: alunos que aparecem nos dois data frames.
Análise das alternativas
A) merge com all=TRUE é função do R base, faz união completa e usa NOMES, que não existe em df2. C) left_join mantém todos os alunos de df1. D) right_join mantém todos os alunos de df2. E) full_join mantém todos os registros de ambas as tabelas.
Referência: Documentação do dplyr (mutating joins).
Resolução comentada do VaiConcursos.