Re: [R] How to order or sort a data.frame

From: John Kane <jrkrideau_at_yahoo.ca>
Date: Tue 15 Aug 2006 - 01:08:49 EST

> try the following:
>
> mdf <- data.frame(us.state, count, year, month)
> mdf[order(mdf$year, mdf$month), ]
>

Thansk to Dimitris and Dieter. This has helped since seems to have shown me a way around the problem. It just means that I have to sort the data earlier.

What my example did not show clearly is that when I subset the data the variable 'month' which is numeric in the original dataframe becomes a factor. I was wondering if there was a way to sort the factor so that I would get a numeric sort. So far I have not been able to see how to coerce the factor "month" into a numeric when using 'order"

Thanks for helpl.

Hi Hadley,
I have not had time to check out the reshape but thanks.

> Ph.D. Student
> Biostatistical Centre
> School of Public Health
> Catholic University of Leuven
>
> Address: Kapucijnenvoer 35, Leuven, Belgium
> Tel: +32/(0)16/336899
> Fax: +32/(0)16/337015
> Web: http://med.kuleuven.be/biostat/
>
>
http://www.student.kuleuven.be/~m0390867/dimitris.htm
>
>
> Quoting John Kane <jrkrideau@yahoo.ca>:
>
> > I have a dataframe where I would like to order
> first
> > by variable, year, and then within that variable
> by
> > month.
> >
> > So far the only way that I have seen to do this is
> to
> > order by year and then subset year and sort by
> month
> > and then do an rbind to get things back together.
> >
> > Is this the right approach?
> >
> > Example:
> >
> > us.state <-rep("California", 23)
> >
> > count <-
> c(774,283,774,283,508,283,774,283,602,283,
> >
> > 774,508,0,602,330,283,283,283,602,301,126, NA,301)
> >
> > year <- c(2002, 2003, 2001, 2002, 2001, 2002,
> 2001,
> > 2002, 2002, 2003,
> > 2002, 2002, 2001, 2002, 2001, 2002,
> 2001,
> > 2002, 2001, 2002,
> > 2001, 2001, 2002)
> >
> > month <- c( 1, 1, 10, 10, 11, 11, 12, 12,
> >
> > 2, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9,
> 9,
> > 9)
> >
> >
> >
> >
> > df <- data.frame (cbind(us.state,count, year,
> month))
> >
> > # ordering as a factor works here
> >
> > df1 <- df[order(df$year),]
> >
> > df1
> >
> >
> >
> > df2 <- subset(df1, year==2001)
> >
> >
> >
> > # ordering as a factor works but not a good
> > appearance.
> >
> >
> > df3 <- df2[order(as.numeric(df2$month)),]
> >
> > df3
> >
> >
> >
> > This works but "month" is ordered as a factor
> and I
> > would prefer to coerce it into a numeric for
> > presentation purposes but
> > df3 <- df2[order(as.numeric(df2$month)),] does
> not
> > seem to work, nor has a couple of other things
> I've
> > tried.
> >
> > Any suggestions gratefully received.
> >
> > ______________________________________________
> > R-help@stat.math.ethz.ch 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.
> >
> >
>
>
>
> Disclaimer:
> http://www.kuleuven.be/cwis/email_disclaimer.htm
>
>



R-help@stat.math.ethz.ch 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. Received on Tue Aug 15 01:12:38 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 15 Aug 2006 - 06:22:26 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.