Umformen von Daten mit dem Paket data.table

Ich habe die gleiche Frage vor ein paar Tagen gestellt (Klick hier), erwähnte aber nicht, dass ein Ergebnis mitdata.table wäre dankbar

Die "Aggregat-Lösung" funktioniert einwandfrei, obwohl es ziemlich langsam ist! Ich suche nach einem schnelleren Weg, um dies zu lösen.

Ich möchte den folgenden data.frame umformen:

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

so dass es so aussieht:

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

Die Variabley&nbsp;imdf&nbsp;sollte gebrochen werden, so dass seine Elemente neue Variablen sind, wobei jeder Dummy codiert ist. Alle anderen Variablen (in diesem Fall nurz) sind für jede Person gleich (p1, p2 usw.). Die einzige Variable, bei der eine bestimmte Person p unterschiedliche Werte hat, isty.
Der Grund, warum ich das möchte, ist, dass ich dieses Dataset mit anderen nach Variablen zusammenführen mussx. Es muss eine Zeile pro Person sein (p1,p2&nbsp;usw).