[R] How to order or sort a data.frame
John Kane
jrkrideau at yahoo.ca
Mon Aug 14 17:08:49 CEST 2006
--- Dimitrios Rizopoulos
<Dimitris.Rizopoulos at med.kuleuven.be> wrote:
> 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 at 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 at 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
>
>
More information about the R-help
mailing list