[R] stacking consecutive columns

Graves, Gregory ggraves at sfwmd.gov
Wed Nov 17 15:03:53 CET 2010


I have a file, each column of which is a separate year, and each row of each column is mean precipitation for that month.  Looks like this (except it goes back to 1964).

month        X2000  X2001  X2002  X2003  X2004  X2005  X2006 X2007  X2008  X2009 
1            1.600  1.010  4.320  2.110  0.925  3.275  3.460 0.675  1.315  2.920
2            2.960  3.905  3.230  2.380  2.720  1.880  2.430 1.380  2.480  2.380
3            1.240  1.815  1.755  1.785  1.250  3.940 10.025 0.420  2.845  2.460
4            3.775  1.350  2.745  0.170  0.710  2.570  0.255 0.425  4.470  1.250
5            4.050  1.385  5.650  1.515 12.005  6.895  7.020 4.060  7.725  2.775
6            8.635  8.900 15.715 12.680 16.270 12.605  7.095 7.025 10.465  7.345
7            5.475  7.955  7.880  6.670  7.955  7.355  5.475 5.650  7.255  7.985
8            8.435  5.525  7.120  6.250  7.150  7.610  5.525 6.500  6.275 10.405
9            5.855  7.830  7.250  7.355  9.715  7.850  6.385 7.960  4.485  7.250
10          7.965 11.915  6.735  8.125  7.855 10.465  4.340 6.165  2.400  3.240
11          1.705  1.525  0.905  1.670  1.840  2.100  0.255 2.830  4.425  1.645
12          2.335  0.840  0.795  1.890  0.145  1.700  0.260 2.160  2.300  2.220

What I want to do is to stack 2008 data underneath 2009 data, 2007 under 2008, 2006 under 2007, etc.  I have so far figured out that I can do this with the following clumsy approach:

a=stack(yearmonth,select=c(X2009,X2008))
b=stack(yearmonth,select=c(X2008,X2007))
x=as.data.frame(c(a,b))
write.table(x,"clipboard",sep="	",col.names=NA) #then paste this back into Excel to get this


 	values	ind	values.1	ind.1
1	0.275	X2009	1.285	X2008
2	0.41	X2009	3.85	X2008
3	1.915	X2009	3.995	X2008
4	1.25	X2009	3.845	X2008
5	8.76	X2009	2.095	X2008
6	8.65	X2009	8.29	X2008
7	7.175	X2009	9.405	X2008
8	7.19	X2009	13.44	X2008
9	8.13	X2009	7.245	X2008
10	1.46	X2009	5.645	X2008
11	2.56	X2009	0.535	X2008
12	5.01	X2009	1.225	X2008
13	1.285	X2008	0.72	X2007
14	3.85	X2008	1.89	X2007
15	3.995	X2008	1.035	X2007
16	3.845	X2008	2.86	X2007
17	2.095	X2008	3.785	X2007
18	8.29	X2008	9.62	X2007
19	9.405	X2008	9.245	X2007
20	13.44	X2008	5.595	X2007
21	7.245	X2008	8.4	X2007
22	5.645	X2008	6.705	X2007
23	0.535	X2008	1.47	X2007
24	1.225	X2008	1.665	X2007


Is there an easier, cleaner way to do this?  Thanks.

Gregory A. Graves, Lead Scientist
Everglades REstoration COoordination and VERification (RECOVER) 
Restoration Sciences Department
South Florida Water Management District
Phones:  DESK: 561 / 682 - 2429 
                   CELL:  561 / 719 - 8157



More information about the R-help mailing list