Elegant or not ... This approach worked as intended, the objective being to 
create individual 'years' each of which was 24 months long (not 12) such that 
each 'year' reflected the antecedent rainfall condition.  THANKS.

I needed to do this to help us identify years that were similar to one another 
with respect to resultant water-level stage pattern in the Everglades.  Thus 
the need to examine each year in respect to its preceeding year.

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


-----Original Message-----
From: Patrick Hausmann [mailto:patrick.hausm...@uni-bremen.de] 
Sent: Wednesday, November 17, 2010 9:49 AM
To: r-help@r-project.org; Graves, Gregory
Subject: Re: [R] stacking consecutive columns


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