Zeilendaten in binäre Spalten konvertieren

Ich versuche, eine Datenspalte in viele binäre Spalten zu formatieren, um sie schließlich für das Assoziationsregel-Mining zu verwenden. Ich hatte einige Erfolge bei der Verwendung einer for-Schleife und einer einfachen Triplett-Matrix, bin mir jedoch nicht sicher, wie ich danach nach den Ebenen in der ersten Spalte aggregieren soll - ähnlich wie bei einergruppiere nach Anweisung in SQL. Ich habe unten ein Beispiel angegeben, allerdings mit einem viel kleineren Datensatz. Wenn dies erfolgreich ist, wird mein tatsächlicher Datensatz 4.200 Zeilen mal 3.902 Spalten groß sein, sodass jede Lösung skalierbar sein muss. Anregungen oder alternative Ansätze wäre sehr dankbar!

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage