我有以下数据:
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,矩阵数据是数量?
答案 0 :(得分: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);