Изменение формы данных с использованием пакета data.table

Я задал тот же вопрос несколько дней назад (кликните сюда), но не упомянул, что результат использованияdata.table будет оценено

«Агрегатное решение» работает отлично, хотя и довольно медленно! Я ищу более быстрый способ решить эту проблему.

Я хочу изменить следующую форму 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

так что это выглядит так:

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

Переменнаяy вdf должен быть разбит так, чтобы его элементы были новыми переменными, каждая из которых была закодирована. Все остальные переменные (в данном случае простоz) равны для каждого человека (р1, р2 и т. д.). Единственная переменная, в которой конкретный человек p имеет разные значения,y.
Я хочу это потому, что мне нужно объединить этот набор данных с другими по переменнойx, Дело в том, что это должен быть один ряд на человека (p1,p2 и т.д).

Ответы на вопрос(1)

Ваш ответ на вопрос