根据值的计数排列列表
问题描述:
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
答
您可以使用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
这就像Deja Vu! – Sotos
不在那里它没有订购专栏。那里是价值的排序。清楚地检查我的输入和输出。 – raju