[R] Sort a data frame
Liaw, Andy
andy_liaw at merck.com
Tue Jul 20 14:59:35 CEST 2004
Since this is such an FAQ, perhaps sort() could be made generic, with a
method for data frame? Here's a crack at it:
sort.data.frame <- function(x, key, ...) {
if (missing(key)) {
rn <- rownames(x)
if (all(rn %in% 1:nrow(x))) rn <- as.numeric(rn)
x[order(rn, ...), , drop=FALSE]
} else {
x[do.call("order", c(x[key], ...)), , drop=FALSE]
}
}
Here the default behavior, when `key' is not supplied, is to sort by
rownames. One (more sensible?) alternative is to sort by all columns in the
data frame, by making key=names(x).
[If the rownames of the data frame are numbers but not consecutive integers,
it may give the unintuitive result. Does anyone know how to test whether a
character can be coerced into numeric without generating a warning?]
Andy
> From: Luis Rideau Cruz
>
> Hi all
>
> I have the next data frame
>
> year STOD SLAGNR TAL TALT TALVEKT
> 1 2002 2120006 57 1 NA 1
> 2 1997 97030032 57 NA NA NA
> 3 1997 97030071 27 1 NA NA
> 4 1997 97030005 57 1 NA NA
> 5 1997 97020127 60 NA 1 NA
> 6 2001 1160025 27 1 NA 1
> 7 1998 98020069 60 1 NA NA
> 8 1996 96030009 57 NA 1 NA
>
> How to sort it according to "year" column
> Sort does seem to work only on vectors
>
> Thank you
>
> Luis Ridao Cruz
> Fiskirannsóknarstovan
> Nóatún 1
> P.O. Box 3051
> FR-110 Tórshavn
> Faroe Islands
> Phone: +298 353900
> Phone(direct): +298 353912
> Mobile: +298 580800
> Fax: +298 353901
> E-mail: luisr at frs.fo
> Web: www.frs.fo
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
>
More information about the R-help
mailing list