2015-03-02 62 views
-3

我有一個數據與多列,我想堆疊它。我的數據看起來像將多個列堆疊成一列

January February March 

20.5733 47.3457 47.8473 
-9999 -9999 -9999 
18.8403 41.3779 44.6814 
23.0879 35.9153 41.216 
43.49 31.85 40.17 
-9999 -9999 -9999 
-9999 -9999 -9999 
15.1745 43.8709 46.5024 

,我需要的數據如下

Janaury 20.5733 
January -9999 
January 18.8403 
Janaury 23.0879 
January 43.49 
January -9999 
Janaury -9999 
January 15.1745 
February 47.3457 
February -9999 
February 41.3779 
February 35.9153 
February 31.85 
February -9999 
February -9999 
February 43.8709 
March 47.8473 
March -9999 
March 44.6814 
March 41.216 
March 40.17 
March -9999 
March -9999 
March 46.5024 

感謝 加文

+1

試試'library(reshape2); melt(df1)' – akrun 2015-03-02 17:33:34

+2

你試過'stack'嗎? – A5C1D2H2I1M1N2O1R2T1 2015-03-02 17:33:55

回答

2

從你的問題標題純粹去,看看stack,例如,stack(mydf)

這裏是前10行:

> head(stack(mydf), 10) 
     values  ind 
1  20.5733 January 
2 -9999.0000 January 
3  18.8403 January 
4  23.0879 January 
5  43.4900 January 
6 -9999.0000 January 
7 -9999.0000 January 
8  15.1745 January 
9  47.3457 February 
10 -9999.0000 February 

熱門軟件包,包括 「reshape2」 和 「tidyr」 與該辦法是這樣的:

library(reshape2) 
melt(mydf) 

library(tidyr) 
gather(mydf, var, val, January:March)