Seleccione solo la primera fila cuando combine marcos de datos con múltiples coincidencias

Tengo dos marcos de datos, "datos" y "puntajes", y quiero fusionarlos en la columna "id":

data = data.frame(id = c(1,2,3,4,5),
                  state = c("KS","MN","AL","FL","CA"))
scores = data.frame(id = c(1,1,1,2,2,3,3,3),
                    score = c(66,75,78,86,85,76,75,90))
merge(data, scores, by = "id")                  
semi_join(data, scores, by = "id")                  

En los datos de "puntajes", hay "id" con múltiples observaciones, donde cada coincidencia obtiene una fila después de la unión. Ver?merge:

Si hay más de una coincidencia, todas las posibles coincidencias contribuyen con una fila cada una.

Sin embargo, quiero mantener solo la fila correspondiente a laprimero partido de lascores mesa.

Un semiunión hubiera sido bueno, pero no puedo seleccionar el puntaje de la tabla correcta.

¿Alguna sugerencia?

Respuestas a la pregunta(3)

Su respuesta a la pregunta