remodelar las lecturas variables repetidas de ID múltiple de largo a ancho

Esto es lo que tengo:

id<-c(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2)
measure<-c("speed","weight","time","speed","weight","time","speed","weight","time",
           "speed","weight","time","speed","weight","time","speed","weight","time")
value<-c(1.23,10.3,33,1.44,10.4,31,1.21,10.1,33,4.25,12.5,38,1.74,10.8,31,3.21,10.3,33)
testdf<-data.frame(id,measure,value) 

Esto es lo que quiero:

id<-c(1,1,1,2,2,2)  
speed<-c(1.23,1.44,1.21,4.25,1.74,3.21)
weight<-c(10.3,10.4,10.1,12.5,10.8,10.3)
time<-c(33,31,33,37,31,33)
res<-data.frame(id,speed,weight,time) 

El problema radica en que mis variables aceleran el peso y el tiempo se repiten. Puedo hacerlo con un bucle for con declaraciones if, pero es un gran dolor de cabeza y no es muy eficiente. Esta es mi primera publicación en stackoverflow ... pregunta por primera vez del usuario desde hace mucho tiempo ... ¡gracias a todos!

Respuestas a la pregunta(5)

Su respuesta a la pregunta