will this do it for you:
> require(reshape2) > toy <- data.frame(year = rep(2007:2008,each = 20), month = rep(1:5,each = 4, > length = 40), + day = rep(1:2,each = 2,length = 40), hhmm = rep(1100:1101,length = 40), plot = rep(1,40), + trt=rep(4,40), VWC.B1 = rnorm(40), VWC.B2 = rnorm(40), VWC.T1 = rnorm(40), + VWC.T2 = rnorm(40), VWC.T10 = rnorm(40), Tair.B1 = rnorm(40),Tair.B2 = rnorm(40), + Tair.T1 = rnorm(40), Tair.T2 = rnorm(40)) > > x <- melt(toy, id = c('year', 'month', 'day', 'hhmm', 'plot', 'trt')) > > # parse the type, group and number > x$type <- sub("\\..*$", "", x$variable) > x$group <- sub(".*\\.(.).*", "\\1", x$variable) > x$number <- sub(".*\\..", "", x$variable) > > head(x) year month day hhmm plot trt variable value type group number 1 2007 1 1 1100 1 4 VWC.B1 0.35680152 VWC B 1 2 2007 1 1 1101 1 4 VWC.B1 -0.01787670 VWC B 1 3 2007 1 2 1100 1 4 VWC.B1 -0.07361414 VWC B 1 4 2007 1 2 1101 1 4 VWC.B1 0.90117558 VWC B 1 5 2007 2 1 1100 1 4 VWC.B1 0.64824677 VWC B 1 6 2007 2 1 1101 1 4 VWC.B1 0.26769079 VWC B 1 > On Wed, Jun 20, 2012 at 12:08 PM, nrm2010 <nrm2...@zoho.com> wrote: > Hello, helpeRs, > > I am attempting to reshape (either base R or package reshape) multiple .csv > spreadsheets from a very unfortunate wide format to long format. Each > spreadsheet > looks something like this, after being read in to R: > > toy <- data.frame(year = rep(2007:2008,each = 20), month = rep(1:5,each = 4, > length = 40), > day = rep(1:2,each = 2,length = 40), hhmm = rep(1100:1101,length = 40), plot > = rep(1,40), > trt=rep(4,40), VWC.B1 = rnorm(40), VWC.B2 = rnorm(40), VWC.T1 = rnorm(40), > VWC.T2 = rnorm(40), VWC.T10 = rnorm(40), Tair.B1 = rnorm(40),Tair.B2 = > rnorm(40), > Tair.T1 = rnorm(40), Tair.T2 = rnorm(40)) > > Taken together, the columns year, month, day, and hhmm define a timepoint > at which at a measurement was taken. Plot and treatment do not change within > any one spreadsheet. Parsing the column names, VWC and Tair are 2 different > types of measurements; in the full dataset, there are more than 2 types of > measurements. The B and T in the column names are grouping variables. The > numbers following the B or T are subjects within groups. So, if a column name > is VWC.B1, it is the VWC measurement taken on subject 1 within group B. > > I am trying to reshape to long format. The long format should have one new > column > for each measurement type (VWC and Tair in the toy example), a new column > indicating the grouping variable (B or T), and a new column identifyng the > subject (the number that follow the B or T). I've been unable to come up with > a solution that produces the group and subject within group columns as well > as both types of measurements. > > Any assistance would be greatly appreciated. > > Thank you. > > Toby > > Toby Gass, Ph.D. > Visiting Lecturer, Forestry and Wildland Resources > Humboldt State University > email: toby.gass <at> humboldt <dot> edu > > ______________________________________________ > 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. -- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. ______________________________________________ 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.