Hi
Best function for sorting which i have used and many in the community :-)
HTH Cheers
sort.data.frame(Oats, ~ -nitro + Variety)
Feedback and improvements are welcome.
sort.data.frame <- function(form,dat){
# Author: Kevin Wright
# Some ideas from Andy Liaw
# http://tolstoy.newcastle.edu.au/R/help/04/07/1076.html
# Use + for ascending, - for decending.
# Sorting is left to right in the formula
# Useage is either of the following:
# library(nlme); data(Oats)
# sort.data.frame(~-Variety+Block,Oats) # Note: levels(Oats$Block)
# sort.data.frame(Oats,~nitro-Variety)
# If dat is the formula, then switch form and dat
if(inherits(dat,"formula")){
f=dat
dat=form
form=f
}
if(form[[1]] != "~")
stop("Formula must be one-sided.")
# Make the formula into character and remove spaces
formc <- as.character(form[2])
formc <- gsub(" ","",formc)
# If the first character is not + or -, add +
if(!is.element(substring(formc,1,1),c("+","-")))
formc <- paste("+",formc,sep="")
# Extract the variables from the formula
if(exists("is.R") && is.R()){
vars <- unlist(strsplit(formc, "[\\+\\-]"))
}
else{
vars <-
unlist(lapply(unpaste(formc,"-"),unpaste,"+"))
}
vars <- vars[vars!=""] # Remove spurious "" terms
# Build a list of arguments to pass to "order" function
calllist <- list()
pos=1 # Position of + or -
for(i in 1:length(vars)){
varsign <- substring(formc,pos,pos)
pos <- pos+1+nchar(vars[i])
if(is.factor(dat[,vars[i]])){
if(varsign=="-")
calllist[[i]] <- -rank(dat[,vars[i]])
else
calllist[[i]] <- rank(dat[,vars[i]])
}
else {
if(varsign=="-")
calllist[[i]] <- -dat[,vars[i]]
else
calllist[[i]] <- dat[,vars[i]]
}
}
dat[do.call("order",calllist),]
}
elyakhlifi mustapha <elyakhlifi_mustapha@yahoo.fr>
Sent by: r-help-bounces@stat.math.ethz.ch
20-04-07 03:30 PM
To
R-help@stat.math.ethz.ch
cc
Subject
[R] sorting data in R
hello,
I'd like know how to sort a data frame in R for example how I should do
to sort by Catholic with swiss data frame like below
thanks
Fertility Agriculture Examination Education Catholic
Infant.Mortality
Courtelary 80.2 17.0 15 12 9.96 22.2
Delemont 83.1 45.1 6 9 84.84 22.2
Franches-Mnt 92.5 39.7 5 5 93.40 20.2
Moutier 85.8 36.5 12 7 33.77 20.3
Neuveville 76.9 43.5 17 15 5.16 20.6
Porrentruy 76.1 35.3 9 7 90.57 26.6
Broye 83.8 70.2 16 7 92.85 23.6
Glane 92.4 67.8 14 8 97.16 24.9
Gruyere 82.4 53.3 12 7 97.67 21.0
Sarine 82.9 45.2 16 13 91.38 24.4
Veveyse 87.1 64.5 14 6 98.61 24.5
Aigle 64.1 62.0 21 12 8.52 16.5
Aubonne 66.9 67.5 14 7 2.27 19.1
Avenches 68.9 60.7 19 12 4.43 22.7
Cossonay 61.7 69.3 22 5 2.82 18.7
Echallens 68.3 72.6 18 2 24.20 21.2
Grandson 71.7 34.0 17 8 3.30 20.0
Lausanne 55.7 19.4 26 28 12.11 20.2
La Vallee 54.3 15.2 31 20 2.15 10.8
Lavaux 65.1 73.0 19 9 2.84 20.0
Morges 65.5 59.8 22 10 5.23 18.0
Moudon 65.0 55.1 14 3 4.52 22.4
Nyone 56.6 50.9 22 12 15.14 16.7
Orbe 57.4 54.1 20 6 4.20 15.3
Oron 72.5 71.2 12 1 2.40 21.0
Payerne 74.2 58.1 14 8 5.23 23.8
Paysd'enhaut 72.0 63.5 6 3 2.56 18.0
Rolle 60.5 60.8 16 10 7.72 16.3
Vevey 58.3 26.8 25 19 18.46 20.9
Yverdon 65.4 49.5 15 8 6.10 22.5
Conthey 75.5 85.9 3 2 99.71 15.1
Entremont 69.3 84.9 7 6 99.68 19.8
Herens 77.3 89.7 5 2 100.00 18.3
Martigwy 70.5 78.2 12 6 98.96 19.4
Monthey 79.4 64.9 7 3 98.22 20.2
St Maurice 65.0 75.9 9 9 99.06 17.8
Sierre 92.2 84.6 3 3 99.46 16.3
Sion 79.3 63.1 13 13 96.83 18.1
Boudry 70.4 38.4 26 12 5.62 20.3
La Chauxdfnd 65.7 7.7 29 11 13.79 20.5
Le Locle 72.7 16.7 22 13 11.22 18.9
Neuchatel 64.4 17.6 35 32 16.92 23.0
Val de Ruz 77.6 37.6 15 7 4.97 20.0
ValdeTravers 67.6 18.7 25 7 8.65 19.5
V. De Geneve 35.0 1.2 37 53 42.34 18.0
Rive Droite 44.7 46.6 16 29 50.43 18.2
Rive Gauche 42.8 27.7 22 29 58.33 19.3
___________________________________________________________________________
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions
!
Profitez des connaissances, des opinions et des expériences des
internautes sur Yahoo! Questions/Réponses
[[alternative HTML version deleted]]
______________________________________________
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
AND CONFIDENTIALITY CAUTION:\ \ This message and ...{{dropped}}