Follows is the exact solution to this: v <- NULL
#note that decreasing is FALSE so preceding year preceeds for(i in 2:46) { kk <- melt(yearmonth[, c(1, i, i+1)], id.vars="month", variable_name="year") v[[i-1]] <- kk[order(kk$year, decreasing=FALSE),] } x <- do.call(cbind, v) write.table(x,"clipboard",sep=" ",col.names=NA) #export to Excell via Ctrl-V 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.