¿Cómo crear mediante programación columnas binarias basadas en una variable categórica en data.table?

Tengo un gran (12 millones de filas)data.table que se ve así:

library(data.table)
set.seed(123)
dt <- data.table(id=rep(1:3, each=5),y=sample(letters[1:5],15,replace = T))
> dt
    id y
 1:  1 b
 2:  1 d
 3:  1 c
 4:  1 e
 5:  1 e
 6:  2 a
 7:  2 c
 8:  2 e
 9:  2 c
10:  2 c
11:  3 e
12:  3 c
13:  3 d
14:  3 c
15:  3 a

Quiero crear un nuevodata.table que contiene mi variableid (que será la clave única de este nuevodata.table) y otras 5 variables binarias, cada una correspondiente a cada categoría dey que toman valor1 si la identificación tiene ese valor paray, 0 de otra manera.
La salidadata.table debería verse así:

   id a b c d e
1:  1 0 1 1 1 1
2:  2 1 0 1 0 1
3:  3 1 0 1 1 1

Intenté hacer esto en un bucle, pero es bastante lento y tampoco sé cómo pasar los nombres de variables binarias mediante programación, ya que dependen de la variable que estoy tratando de "dividir".

EDITAR: como señaló @mtoto, ya se ha hecho y respondido una pregunta similaraquí, pero la solución es usar elreshape2 paquete.
Me preguntaba si hay otra forma (más rápida) de hacerlo tal vez usando el:= operador en data.table, ya que tengo un conjunto de datos masivo y estoy trabajando bastante con este paquete.

EDIT2: punto de referencia de las funciones en la publicación de @ Arun en mis datos (~ 12 millones de filas, ~ 3,5 millones de identificadores diferentes y 490 etiquetas diferentes para ely variable (que resulta en 490 variables ficticias)):

system.time(ans1 <- AnsFunction())   # 194s
system.time(ans2 <- dcastFunction()) # 55s
system.time(ans3 <- TableFunction()) # Takes forever and blocked my PC

Respuestas a la pregunta(3)

Su respuesta a la pregunta