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
答案 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