Konwertuj dane wierszy na kolumny binarne

Próbuję sformatować kolumnę danych w wiele kolumn binarnych, aby ostatecznie wykorzystać je do eksploracji reguł asocjacyjnych. Odniosłem pewien sukces przy użyciu pętli for i prostej macierzy tripletów, ale nie mam pewności, jak później agregować według poziomów w pierwszej kolumnie - podobnie doGrupuj według instrukcja w SQL. Podałem przykład poniżej, chociaż ze znacznie mniejszym zestawem danych - jeśli mi się to uda, mój rzeczywisty zestaw danych będzie wynosił 4200 wierszy na 3902 kolumny, więc każde rozwiązanie musi być skalowalne. Wszelkie sugestie lub alternatywne podejścia byłyby bardzo mile widziane!

> data <- data.frame(a=c('sally','george','andy','sue','sue','sally','george'), b=c('green','yellow','green','yellow','purple','brown','purple'))
> data
       a      b
1  sally  green
2 george yellow
3   andy  green
4    sue yellow
5    sue purple
6  sally  brown
7 george purple

x <- data[,1]
for(i in as.numeric(2:ncol(data))) 
 x <- cbind(x, simple_triplet_matrix(i=1:nrow(data), j=as.numeric(data[,i]),
              v = rep(1,nrow(data)), dimnames = list(NULL, levels(data[,i]))) )

##Looks like this:

> as.matrix(x)

     name    brown green purple yellow
[1,] "sally"  "0"    "1"   "0"     "0"    
[2,] "george" "0"    "0"   "0"     "1"   
[3,] "andy"   "0"    "1"   "0"     "0"    
[4,] "sue"    "0"    "0"   "0"     "1"   
[5,] "sue"    "0"    "0"   "1"     "0"    
[6,] "sally"  "1"    "0"   "0"     "0" ##Need to aggregate by Name

##Would like it to look like this:
     name    brown green purple yellow
[1,] "sally"  "1"   "1"   "0"    "0"    
[2,] "george" "0"   "0"   "0"    "1"   
[3,] "andy"   "0"   "1"   "0"    "0"    
[4,] "sue"    "0"   "0"   "1"    "1"   

questionAnswers(1)

yourAnswerToTheQuestion