根据值

时间:2017-06-15 13:56:46

标签: r sorting

Input:

Sample  Name2    Name5    Name4   Name8   Name1   group
 ERT    0.111    0.389    0.378     0       1       HJ
 KLJ       0     0.167      1     0.875   0.389     HJ
 FGT    0.867    0.4345    0.4      0     0.487     KO
 SDF   0.99234     0      0.98    0.007   0.786     KO
 JHU    0.3347     0        0       0        1      FR

我需要根据值的数量> = 0.3对列进行排序。例如:在“Name2”列中,我看到值的计数> = 0.3是3.对于其他列“Name5” - 2,“Name4” - 4,“Name8” - 1,“Name1” - 5.基于在此计数中,我需要按递减顺序排列列,输出应如下所示:

Output:

Sample   Name8    Name5    Name2   Name4     Name1   group
 ERT       0      0.389    0.111   0.378       1       HJ
 KLJ    0.875     0.167      0       1       0.389     HJ
 FGT       0      0.4345   0.867     0.4     0.487     KO
 SDF    0.007       0      0.99234  0.98     0.786     KO
 JHU       0        0      0.3347    0         1       FR

1 个答案:

答案 0 :(得分:3)

您可以使用colSums计算超过阈值的值,并使用order根据计数获取列的顺序:

df[c(1, order(colSums(df[-1] >= 0.3)) + 1)]

#  Sample Name8  Name5   Name2 Name4 Name1
#1    ERT 0.000 0.3890 0.11100 0.378 1.000
#2    KLJ 0.875 0.1670 0.00000 1.000 0.389
#3    FGT 0.000 0.4345 0.86700 0.400 0.487
#4    SDF 0.007 0.0000 0.99234 0.980 0.786
#5    JHU 0.000 0.0000 0.33470 0.000 1.000