Here is one way of doing it by 'skipping' the first column which is a
factor and your 'time':
> x <- read.table(textConnection(" time met-a met-b met-c
+ 00:00 42 18 99
+ 00:05 88 16 67
+ 00:10 80 27 84"), header=TRUE)
> x.mean <- colMeans(x[-1])
> x.new <- x[,c('time', names(sort(x.mean, decreasing=TRUE)))]
>
> x.new
time met.c met.a met.b
1 00:00 99 42 18
2 00:05 67 88 16
3 00:10 84 80 27
>
On 9/4/07, Lynn Osburn <[EMAIL PROTECTED]> wrote:
>
> I read from external data source containing several columns. Each column
> represents value of a metric. The columns are time series data.
>
> I want to sort the resulting dataframe such that the column with the largest
> mean is the leftmost column, descending in colMean values to the right.
>
> I see many solutions for sorting rows based on some column characteristic,
> but haven't found any discussion of sorting columns based on column
> characteristics.
>
> viz. input data looks like this
> time met-a met-b met-c
> 00:00 42 18 99
> 00:05 88 16 67
> 00:10 80 27 84
>
> desired output:
> time met-c met-a met-b
> 00:00 99 42 18
> 00:05 67 88 16
> 00:10 84 80 27
>
> Thanks,
> -Lynn
>
> --
> View this message in context:
> http://www.nabble.com/Howto-sort-dataframe-columns-by-colMeans-tf4380044.html#a12485729
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> [email protected] 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
______________________________________________
[email protected] 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.