A very elegant solution Jim. Here is a tidyverse solution. Janet, this is a different sample set (the same you sent in another post a couple days ago), but it will work with this data frame as well.
### RECREATING YOUR DATA FRAME scen<-c("1","1","2","2","3","3") streamflow<-c("0.019234","0.019027","0.018821","0.018619","0.018425","0.018369") trans<-c("1.658967","1.661192","1.695623","1.503481","0.000008","0.100551") evap<-c("0.002883","0.002844","0.003192","0.002536","1.880355","2.225793") psn<-c("0.002391","0.003142","0.002167","0.003059","0.002592","0.006642") df<-as.data.frame(cbind(scen=as.numeric(scen), streamflow=as.numeric(streamflow), trans=as.numeric(trans), evap=as.numeric(evap), psn=as.numeric(psn)), stringsAsFactors = FALSE) ###Data Manipulation library(tidyverse) df2<-gather(df, variable, value, -scen)%>% unite(scen_variable, scen, variable)%>% mutate(Row=sequence(rle(scen_variable)$lengths))%>% spread(scen_variable, value)%>% dplyr::select(-Row) On Fri, Jun 28, 2019 at 2:46 PM Jim Lemon <drjimle...@gmail.com> wrote: > Hi Janet, > This might help: > > jcdf<-read.table(text="scen trans evap flow > 1 1.1 0.1 0.09 > 1 1.2 0.2 0.10 > 1 1.3 0.3 0.20 > 2 2.1 0.1 0.09 > 2 2.2 0.2 0.10 > 2 2.3 0.3 0.20 > 3 3.1 0.1 0.09 > 3 3.2 0.2 0.10 > 3 3.3 0.3 0.20", > header=TRUE) > library(prettyR) > stretch_df(jcdf,"scen",c("trans","evap","flow"))[,2:10] > > Jim > > > On Sat, Jun 29, 2019 at 1:42 AM Janet Choate <jsc....@gmail.com> wrote: > > > > Hello R community, > > I have a data frame that has multiple observations in a single column > that > > I would like to break into multiple columns. > > The data looks something like this: > > > > scen trans evap flow > > 1 1.1 0.1 0.09 > > 1 1.2 0.2 0.10 > > 1 1.3 0.3 0.20 > > 2 2.1 0.1 0.09 > > 2 2.2 0.2 0.10 > > 2 2.3 0.3 0.20 > > 3 3.1 0.1 0.09 > > 3 3.2 0.2 0.10 > > 3 3.3 0.3 0.20 > > > > the column scen runs from 1 through 500, and each scen # contains 1461 > rows > > - i.e. there are 1461 observations for scen1, 1461 observations for > scen2, > > etc... > > i want to split the trans, evap, and flow columns out by scen #, so that > i > > end up with something like: > > > > trans1 trans2 trans3 > > 1.1 2.1 1.1 > > 1.2 2.2 3.2 > > 1.3 2.3 3.3 > > > > and same for the other variables. > > thought i could use the separate command to do this, but either not the > > right approach or i am not executing it properly. > > thank you for any assistance, > > Janet > > -- > > Tague Team Lab Manager > > 1005 Bren Hall > > UCSB, Santa Barbara, CA. > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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 -- To UNSUBSCRIBE and more, see > 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. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.