Cree columnas a partir de factores y cuente [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo obtengo una tabla de contingencia? 6 respuestas Formas más rápidas de calcular frecuencias y emitir de largo a ancho 4 respuestas

Un problema aparentemente fácil me mantiene muy ocupado.

Tengo un marco de datos:

> df1
  Name Score
1  Ben     1
2  Ben     2
3 John     1
4 John     2
5 John     3

Me gustaría crear un resumen de la tabla como esta:

> df2
  Name Score_1 Score_2 Score_3
1  Ben       1       1       0
2 John       1       1       1

Así que df2 debe (i) mostrar solo "Nombres" únicos y (ii) crear columnas a partir de los factores únicos en "Puntaje" y (iii) contar la cantidad de veces que una persona recibió dicho puntaje.

Yo he tratado

df2 <- ddply(df1, c("Name"), summarise
          ,Score_1 = sum(df1$Score == 1)
          ,Score_2 = sum(df1$Score == 2)
          ,Score_3 = sum(df1$Score == 3))

que produce:

  Name Score_1 Score_2 Score_3
1  Ben       2       2       1
2 John       2       2       1

Así que mi intento cuenta incorrectamentetodo ocurrencias en lugar de contar "por grupo"

EDITAR Según los comentarios, también probéreshape (posiblemente solo haciéndolo mal):

> reshape(df1, idvar = "Name", timevar = "Score", direction = "wide")
  Name
1  Ben
3 John

ara empezar, falta la columna "Puntuación", pero peor que eso, según mi investigación enreshape, No estoy convencido de que voy a obtener unconta de cada factor, que es el punto completo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta