2016-06-20 22 views
0

,我有以下數據擴展:排序根據兩個屬性(我認爲這是電網排序)

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

輸出應該

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

如何獲得這種類型的排序中的R語言中列名稱是品牌類型和行名稱是客戶ID,矩陣數據是數量?

+2

到目前爲止,我們已經看到的數據,但有什麼代碼,你試過那沒有奏效? – hrbrmstr

+1

你可以使用tidyr –

回答

1

這可以用reshape()做一對夫婦事後修正信息:

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 

數據

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

在R代碼中使用';'是否有原因? –

+0

@docendodiscimus我以前一直在烤這個;請參閱http://stackoverflow.com/questions/29004672/using-user-defined-for-loop-function-to-construct-a-data-frame/29004774#comment46255949_29004774和http://stackoverflow.com/questions/29534780/R-計算,秩和-自動/ 29534937#comment47223633_29534937。 – bgoldst

+1

我明白你的意思了,謝謝 –