[R] Order of columns(variables) in dataframe

(Ted Harding) Ted.Harding at manchester.ac.uk
Sun Jul 20 13:53:45 CEST 2008


On 20-Jul-08 11:32:14, Daniel Wagner wrote:
> Dear R experts,
> I have a dataframe withÂ_4 columns (variables). I want to redorder (or
> reposition) these columns on the basis of a value in its last row. e.g.
> df1<-data.frame( v1= c(2,3,1,9,5), v2=c(8,5,12,4,11), v3=c(7,8,2,6,9),
> v4=c(1,4,6,3,6))
> 
> I wanto to get the order of df1 on the basis of value in last row
> (descending order) like
> 
> [Sorry, had to delete your examples because of intrusive special
>  characters, but reproduced below anyway]
> 
> Could somebody help me?
> Daniel
> Amsterdam

Try the following. It seems one needs to pass from dataframe to
matrix, since sort() does not like lists! Maybe others know better ...

  df1<-data.frame( v1= c(2,3,1,9,5), v2=c(8,5,12,4,11),
    v3=c(7,8,2,6,9), v4=c(1,4,6,3,6))
  df1
#   v1 v2 v3 v4
# 1  2  8  7  1
# 2  3  5  8  4
# 3  1 12  2  6
# 4  9  4  6  3
# 5  5 11  9  6

  M<-as.matrix(df1)
  L<-M[nrow(M),]

  ix<-sort(L,decreasing=TRUE,index.return=TRUE)$ix
  df2<-as.data.frame(M[,ix])
  df2
#   v2 v3 v4 v1
# 1  8  7  1  2
# 2  5  8  4  3
# 3 12  2  6  1
# 4  4  6  3  9
# 5 11  9  6  5


Hoping this helps,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 20-Jul-08                                       Time: 12:52:12
------------------------------ XFMail ------------------------------



More information about the R-help mailing list