Remodelando dados usando o pacote data.table

Eu fiz a mesma pergunta há alguns dias atrás (Clique aqui), mas não mencionou que um resultado usandodata.table seria apreciado

A "solução agregada" funciona bem, embora seja muito lenta! Estou procurando uma maneira mais rápida de resolver isso.

Quero reformular o seguinte data.frame:

df <- data.frame(x=c("p1","p1","p2"),y=c("a","b","a"),z=c(14,14,16))
df
   x y  z
1 p1 a 14
2 p1 b 14
3 p2 a 16

de modo que pareça com este:

df2 <- data.frame(x=c("p1","p2"),a=c(1,1),b=c(1,0),z=c(14,16))
   x a b  z
1 p1 1 1 14
2 p2 1 0 16

A variávely emdf deve ser quebrado para que seus elementos sejam novas variáveis, cada dummy codificado. Todas as outras variáveis ​​(neste caso apenasz) são iguais para cada pessoa (p1, p2 etc.). A única variável onde uma pessoa específica p tem valores diferentes éy.
A razão que eu quero isso é porque eu preciso mesclar este conjunto de dados com outros por variávelx. A coisa é, precisa ser uma linha por pessoa (p1,p2 etc).

questionAnswers(1)

yourAnswerToTheQuestion