2016-06-20 3 views
0

ich folgende Daten:Sortierung Erweiterte zwei Attribute nach (ich glaube, es Gitter Sortierung)

id  brand  quantity 
1  a   2 
1  b   1 
2  b   5 
3  c   10 
2  d   11 
3  a   1 
4  b   2 

Der Ausgang

a b c d 
1 2 1 0 0 
2 0 5 10 11 
3 1 0 10 0 
4 0 2 0 0 
sein sollte

Wie diese Art der Art bekommen in R Sprache, in der die Spaltennamen Markentypen und Zeilennamen sind Kunden-IDs und die Matrixdaten sind Menge?

+2

bisher haben wir Daten gesehen, aber was für Code haben Sie versucht, das hat nicht funktioniert? – hrbrmstr

+1

Sie können tidyr verwenden –

Antwort

1

Dies kann mit reshape() und ein paar Post-hoc-Korrekturen erfolgen:

res <- reshape(df,dir='w',timevar='brand')[-1L]; 
names(res) <- sub('^quantity\\.','',names(res)); 
res[is.na(res)] <- 0L; 
res; 
## a b c d 
## 1 2 1 0 0 
## 3 0 5 0 11 
## 4 1 0 10 0 
## 7 0 2 0 0 

Daten

df <- data.frame(id=c(1L,1L,2L,3L,2L,3L,4L),brand=c('a','b','b','c','d','a','b'),quantity=c(
2L,1L,5L,10L,11L,1L,2L),stringsAsFactors=F); 
+1

Gibt es einen Grund, warum Sie ';' in R-Code verwenden? –

+0

@docendodiscimus Ich wurde schon einmal darüber gegrillt; siehe http://stackoverflow.com/questions/29004672/using-user-defined-for-loop-function-to-construct-a-data-frame/29004774#comment46255949_29004774 und http://stackoverflow.com/questions/29534780/r-berechnen-Rang-Summe-automatisch/29534937 # comment47223633_29534937. – bgoldst

+1

Ich sehe was du meinst, danke –