2016-03-30 57 views
1

我有三列數據。在第一列中我有name,而第二列和第三列有一個或多個以分號(;)分隔的值。在兩列中得到值小於或等於給定值的行的代碼

現在我想要打印分號分隔列值對有distance <= 10MAF >= 0.5的行。

我會很高興,如果有人提供R代碼,如果不是在R然後AWK/SED。

ID   Distance MAF 
cg12044689 8;40  0.000200;0.59 
cg12143629 0;1;3  0.000200;0.520;0.0413 
cg12247699 42  0.599 
cg12375698 1;10  0.00231;0.51 

輸出應爲:

ID   Distance MAF 
cg12143629 0;1;3  0.000200;0.520;0.0413 
cg12375698 1;10  0.00231;0.51 

回答

1

下面是一個awk腳本,實現通過分裂和比較成對值任務:

parse.awk

{ 
    # For each row, split the distance and maf columns into the dist and maf arrays 
    n = split($2, dist, ";"); split($3, maf, ";") 
    do { 
    if (dist[n] <= 10 && maf[n] >= 0.5) 
     print 
    } while(n-- >= 1) 
} 

運行這樣的:

awk -f ./parse.awk infile 

輸出:

cg12143629 0;1;3  0.000200;0.520;0.0413 
cg12375698 1;10  0.00231;0.51 
相關問題