我有一个如下所示的数据集:
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
我一直在excel中做这件事,但是我想编写一个程序来自动执行它。我怎么会这样做?
谢谢!
答案 0 :(得分: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