Sto tentando di formattare una colonna di dati in molte colonne binarie da utilizzare per l'estrazione di regole di associazione. Ho avuto un certo successo usando un ciclo for e una semplice terna triplet, ma non so come aggregare i livelli nella prima colonna in seguito - simile a un gruppo tramite l'istruzione in SQL. Ho fornito un esempio qui sotto, anche se con un set di dati molto più piccolo - in caso di successo il mio set di dati effettivo sarà di 4.200 righe per 3.902 colonne, quindi qualsiasi soluzione deve essere scalabile. Eventuali suggerimenti o approcci alternativi sarebbero molto apprezzati!Converti dati di riga in colonne binarie
> 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"
Perché vuoi tutto come personaggio? 'As.data.frame.matrix (data)' ottiene ciò che vuoi? – A5C1D2H2I1M1N2O1R2T1