2016-03-28 10 views
0

でデータをピボットしますプログラムは、私はこのようになりますデータセットを持っているR

item  01/02/2016 01/03/2016 01/04/2016 
-------  --------- --------- ---------- 
juice   0   0   4 
cola   1   3   6 
bananas  5   9   1 

私は最終的な結果は次のようになりますようにデータをピボットしたいと思います:

item date    amount 
------- -----   ------ 
juice 01/02/2016  0 
juice 01/03/2016  0 
juice 01/04/2016  4 
cola 01/02/2016  1 
cola 01/03/2016  3 
cola 01/04/2016  6 
bananas 01/02/2016  5 
bananas 01/03/2016  9 
bananas 01/04/2016  1 

私はそれをエクセルでやってきましたが、Rでそれを自動化するプログラムを書いています。これについてどうすればいいですか?

ありがとうございます!

+0

ルックをmelt' 'で「reshape2」または「data.table」から、またはtidyrから 'gather 'を見てください。 – A5C1D2H2I1M1N2O1R2T1

+0

基底Rでは、 'stack'と' cbind'の組み合わせがそのトリックを行うべきです。 – A5C1D2H2I1M1N2O1R2T1

答えて

1

これを試してみてください、しかし、変数名には、日付することはできませんので、再成形後の日付に変数名を再マップ:

> df 
     item d01 d02 d03 
    1 juice 0 0 4 
    2 cola 1 3 6 
    3 bananas 5 9 1 
    > library(reshape2) 
    > df2 <- melt(df, id.vars=1) 
    > df2 
     item variable value 
    1 juice  d01  0 
    2 cola  d01  1 
    3 bananas  d01  5 
    4 juice  d02  0 
    5 cola  d02  3 
    6 bananas  d02  9 
    7 juice  d03  4 
    8 cola  d03  6 
    9 bananas  d03  1 
    > df2[order(df2$item),] 
     item variable value 
    3 bananas  d01  5 
    6 bananas  d02  9 
    9 bananas  d03  1 
    2 cola  d01  1 
    5 cola  d02  3 
    8 cola  d03  6 
    1 juice  d01  0 
    4 juice  d02  0 
    7 juice  d03  4 
関連する問題