2015-04-12 90 views
-2

我有一个数据框,我想根据列平均值重新排序。我想通过减少列重新排序意味着根据列重新排列数据帧的列意思是

SNR  SignalIntensity ID 
1 1.0035798  6.817374 109 
2 11.9438978  11.545993 110 
4 3.2894878  9.780420 112 
5 4.0170266  9.871984 113 
6 1.6310523  9.078186 114 
7 1.6405415  8.228931 116 
8 1.6625413  8.043536 117 
9 0.8489116  6.179346 118 
10 7.5312260  10.558180 119 
11 7.2832911  10.474533 120 
12 0.5732577  4.157294 121 
14 0.8149754  6.045174 124 

我用下面的代码

means <- colMeans(df) ## to get mean 
df <- df[,order(means)] ## to reorder 

得到列meanorder,但我得到的列增加的平均,相反我利益。我应该怎么做递减列order重新排序意味着

预期输出

ID SignalIntensity  SNR 
1 109  6.817374 1.0035798 
2 110  11.545993 11.9438978 
4 112  9.780420 3.2894878 
5 113  9.871984 4.0170266 
6 114  9.078186 1.6310523 
7 116  8.228931 1.6405415 
8 117  8.043536 1.6625413 
9 118  6.179346 0.8489116 
10 119  10.558180 7.5312260 
11 120  10.474533 7.2832911 
12 121  4.157294 0.5732577 
14 124  6.045174 0.8149754 
+2

我建议看看[这里](http://stackoverflow.com/负值的order问题/ 1296646 /如何到排序-A-数据帧逐列式-R)。第一个Google几乎击中了任何“排序”/“顺序”和“r”变体。 –

回答

1

的默认设置是decreasing=FALSE。我们可以改变,要TRUE

df[order(means, decreasing=TRUE)] 

或者得到的“手段”

df[order(-means)] 
+0

:) :)谢谢... –

+0

@AaghazHussain没问题。您可以在'?order'中查看更多详细信息。 – akrun

+1

顺便说一下,使用'data.table'的开发版本,您现在可以通过引用*订购数据帧,而无需转换为数据表。使用类似'setcolorder(df,order(-means))' –