根据两个属性进行扩展排序(我认为是网格排序)

时间:2016-06-20 10:03:12

标签: r sorting

我有以下数据:

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,矩阵数据是数量?

1 个答案:

答案 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);