2017-05-25 67 views
1

我想通過2個變量(其組合創建新的唯一標識符)重新整理我的數據框從long到wide,同時按產品,產品2和日期彙總值,以便:重新整形由2個變量的長整合

Date   product product2 value 
03/03/2011  a  z  7 
03/03/2011  a  z  2 
03/05/2015  b  z  89 
03/01/2017  a  z  2 
03/03/2017  c  z  6 

這將產生以下

 03/03/2011 03/03/2011 03/05/2015 03/01/2017 03/03/2017 
a z  9         2 
b z        89 
c z              6 

我應該使用dplyr,重塑,reshape2?

df <- structure(list(Date = c("03/03/2011", "03/03/2011", "03/05/2015", "03/01/2017", "03/03/2017"), 
      product= c("a", "a", "b", "a", "c"), 
      product2= c("z", "z", "z", "z", "z"), 
      value= c(7L, 2L, 89L, 2L, 6L)), 
      .Names= c("Date", "product", "product2", "value"), 
      class= "data.frame", row.names=c(NA, -5L)) 

回答

1
library(data.table) 
data<-fread("Date   product product2 value 
03/03/2011  a  z  7 
      03/03/2011  a  z  2 
      03/05/2015  b  z  89 
      03/01/2017  a  z  2 
      03/03/2017  c  z  6") 
data<-dcast(data,product+product2~Date,value.var="value",fun.aggregate = sum) 
data[,unique_id:=paste(product,product2,sep="")] 
data 
    product product2 03/01/2017 03/03/2011 03/03/2017 03/05/2015 unique_id 
1:  a  z   2   9   0   0  az 
2:  b  z   0   0   0   89  bz 
3:  c  z   0   0   6   0  cz