2016-08-22 40 views
1

我的原始數據是堆疊時間序列的表格。每行記錄特定商店和部門對的每週銷售量。使用重塑從堆疊時間序列表中構建寬矩陣

與3獨特的商店部門配對的一個例子:

Store Dept  Date  Weekly_Sales 
------- ------ ----------- -------------- 
     1  1 5/2/2010    1 
     1  1 12/2/2010    2 
     1  1 19/2/2010    3 
     1  2 5/2/2010    4 
     1  2 12/2/2010    5 
     1  2 19/2/2010    6 
     2  1 5/2/2010    7 
     2  1 12/2/2010    8 
     2  1 19/2/2010    9 

我想使用Reshape2包下熔化和鑄造方法,我的表格轉換爲這種格式。

Date  Store1_Dept1 Store1_Dept2 Store2_Dept1 
----------- -------------- -------------- -------------- 
    5/2/2010    1    4    7 
    12/2/2010    2    5    8 
    19/2/2010    3    6    9 

我有2個問題,尋求幫助與:

  1. 我的做法是用日期作爲我的id來融化我的原始數據幀。

    melt.df < - melt.data.frame(DF,id.vars = '日期')

這種方法產生一個錯誤,我不明白。

Error in as.Date.numeric(value) : 'origin' must be supplied

  • 我不確定如何使用dcast()方法來實現我需要的結果,當短語的公式。
  • +0

    @akrun:謝謝你,我向類似的問題在這裏。 我嘗試使用相同的方法作爲我的示例: 'library(data.table)' 'dcast(train,Date〜Weekly_Sales,value.var = c(「Store」,「Dept」),sep =「 。')' 但是我收到這個錯誤: '.subset2(x,i,exact = exact)中的錯誤:下標超出範圍' –

    +0

    您需要的是'dcast(train,Date〜Store + Dept,value .var =「Weekly_Sales」)' – akrun

    +0

    @akrun:謝謝你,你的代碼工作完美。 –

    回答

    0

    我們可以使用dcastreshape2

    library(reshape2) 
    dcast(train, Date ~ Store + Dept, value.var = "Weekly_Sales")