Преобразовать данные строки в двоичные столбцы

Я пытаюсь отформатировать столбец данных во множество двоичных столбцов, чтобы в конечном итоге использовать их для анализа правил сопоставления. У меня был некоторый успех при использовании цикла for и простой триплетной матрицы, но я не уверен, как сгруппировать по уровням в первом столбце после этого - аналогичногруппа по утверждение в SQL. Ниже приведен пример, хотя и с гораздо меньшим набором данных - в случае успеха мой фактический набор данных будет составлять 4200 строк на 3902 столбца, поэтому любое решение должно быть масштабируемым. Любые предложения или альтернативные подходы будут с благодарностью!

> 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"   

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

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