¿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&nbsp;que contiene mi variableid&nbsp;(que será la clave única de este nuevodata.table) y otras 5 variables binarias, cada una correspondiente a cada categoría dey&nbsp;que toman valor1&nbsp;si la identificación tiene ese valor paray, 0&nbsp;de otra manera.
La salidadata.table&nbsp;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&nbsp;paquete.
Me preguntaba si hay otra forma (más rápida) de hacerlo tal vez usando el:=&nbsp;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&nbsp;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