Hi Gregory,

is this what you want? Ok, not the most elegant way...

# using 'melt' from the 'reshape' package

library(reshape)
Data <- data.frame(month = 1:12,
                 x2002 = runif(12),
                 x2003 = runif(12),
                 x2004 = runif(12),
                 x2005 = runif(12))

v <- NULL

for(i in 2:4) {
 kk <- melt(Data[, c(1, i, i+1)], id.vars="month", variable_name="year")
 v[[i-1]] <- kk[order(kk$year, decreasing=TRUE),]
}

out <- do.call(cbind, v)

HTH
Patrick

Am 17.11.2010 15:03, schrieb Graves, Gregory:
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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to