基于列平均值重新排序数据帧的列

时间:2015-04-12 11:38:25

标签: r sorting dataframe

我有一个数据框,我想根据列平均值重新排序。我想通过降低列平均值来重新排序

    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 

获取mean列和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

1 个答案:

答案 0 :(得分:1)

order中的默认设置为decreasing=FALSE。我们可以将其更改为TRUE

df[order(means, decreasing=TRUE)]

或者得到order的负值为&#39;表示&#39;

df[order(-means)]