One easy way is to package reshape2, but you must add a secondary identifier.
mydf$ID2 <- ave(mydf$ID, mydf$ID, FUN = seq_along)
library(reshape2)
dfL <- melt(mydf, id.vars=c("ID", "ID2"))
dcast(dfL, ID ~ variable + ID2)
"ID2", , R reshape. , .
reshape(mydf, direction = "wide", idvar="ID", timevar="ID2")