Remodelando el marco de datos con duplicados

Tengo lo que debería ser un simple problema de remodelación, pero no puedo resolverlo. Parte de mis datos se ve así:

foo <- structure(list(grade = c(3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 
3, 3, 4, 4, 5, 5, 6, 6), var.type = structure(c(3L, 2L, 3L, 2L, 
3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L
), .Label = c("Raw Score", "SE", "SS"), class = "factor"), var.val = c(120L, 
47L, 120L, 46L, 120L, 46L, 120L, 47L, 120L, 46L, 120L, 46L, 120L, 
12L, 120L, 14L, 120L, 16L, 120L, 20L)), .Names = c("grade", "var.type", 
"var.val"), row.names = c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
11L, 12L, 13L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L), class = "data.frame")

o

  grade var.type var.val
2     3       SS     120
3     3       SE      47
4     4       SS     120
5     4       SE      46
6     5       SS     120
7     5       SE      46

Quiero hacer que se vea así:

grade    SS    SE
3        120   47
4        120   46
5        120   46

y así. He intentado la remodelación, el reparto y la difusión como en este hilo:

Remodelación de datos

Pero nada parece funcionar. Realmente apreciaría alguna ayuda. TIA.

Respuestas a la pregunta(4)

Su respuesta a la pregunta