2017-06-15 68 views
0
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 
+2

這就像Deja Vu! – Sotos

+0

不在那裏它沒有訂購專欄。那裏是價值的排序。清楚地檢查我的輸入和輸出。 – raju

回答

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 
+0

Thankyou ...你能告訴我在命令開始時是1還是在命令結束時+1? – raju

+0

開頭的1是在結果中包含第一列,因爲在排列列時它已經被刪除;最後的+1是將訂單向右移一位,以便他們能夠選取正確的列。 – Psidom