can be done in one line, but it is annoying and ugly, so you probably shouldn't be doing it that way:
>sleep[sleep$group == 1,] <-sleep[sleep$group == 1,][order(sleep[sleep$group == >1,1]),] >sleep extra group ID 1 -1.6 1 2 2 -1.2 1 4 3 -0.2 1 3 4 -0.1 1 5 5 0.0 1 9 6 0.7 1 1 7 0.8 1 8 8 2.0 1 10 9 3.4 1 6 10 3.7 1 7 11 1.9 2 1 12 0.8 2 2 13 1.1 2 3 14 0.1 2 4 15 -0.1 2 5 16 4.4 2 6 17 5.5 2 7 18 1.6 2 8 19 4.6 2 9 20 3.4 2 10 On 5/12/12, jim holtman <jholt...@gmail.com> wrote: > Just write a function so that you have a "one-liner" in your script. > It will probably be a lot simpler than trying to type some convoluted > one-liner. > > On Sat, May 12, 2012 at 2:58 PM, Noah Silverman <noahsilver...@ucla.edu> > wrote: >> Bernard, >> >> Thanks, but I can't take that shortcut. >> >> The data is an xts object, and I may not want to order every group. So, I >> need a way to just order one group at a time. >> >> Thoughts? >> >> -- >> Noah Silverman >> UCLA Department of Statistics >> 8208 Math Sciences Building >> Los Angeles, CA 90095 >> >> On May 12, 2012, at 11:38 AM, Berend Hasselman wrote: >> >>> >>> On 12-05-2012, at 20:04, Noah Silverman wrote: >>> >>>> Is there a way to order data and subset it at the same time?? >>>> >>>> >>>> >>>> I want to sort all the members of group A by their values in column 3. >>>> (I'll then do the same for each subsequent group.) This could be done >>>> in a loop building up another vector, but I like to avoid loops in R. >>>> ------------------------------------- >>>> a <- temp[temp$group=="A",] >>>> a <- a[order(a[,3]),] >>>> temp[temp$group=="A",] <- a >>>> ------------------------------------------ >>>> >>>> Iid like to do this in a single step for each group. However, I can't >>>> figure out how to order and subset at the same time. >>>> >>>> This *does not work* but should illustrate what I'm trying to do >>>> >>>> temp[temp$group=="A",] <- temp[ temp$group=="A" & >>>> order(temp[temp$group=="A",3]) , ] >>>> >>>> >>>> Suggestions? >>> >>> set.seed(413) >>> >>> temp <- data.frame(group=rep(c("A","B","C"), rep=5), >>> tt=1:15,val=round(runif(15),2), stringsAsFactors=FALSE) >>> idx <- order(temp$group,temp$val) >>> # or idx <- order(temp[,1],temp[,3]) >>> idx >>> z2 <- temp[idx,] >>> rownames(z2) <- NULL >>> z2 >>> >>> Possible NA's etc. not taken into account. >>> >>> Berend >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> 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. > ______________________________________________ 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.