从多列过滤和替换

时间:2017-07-11 12:54:15

标签: python r linux awk sed

我有一个文件,我必须用pval > 0.05替换大于0.05(NA)的pvalue,换句话说,保留pval < 0.05并用{替换p val > 0.05 {1}}。

例如:

NA

输出:

Rv_FC    Rv_Pval  Gc_FC  Gc_Pval ......
2          0.001   3      0.99
3          0.99    1      0.0002
3          0.0001  2      0.89

只应考虑pval列,如果它们的值是&gt; 0.05,应该用Rv_FC Rv_Pval Gc_FC Gc_Pval ...... 2 0.001 3 NA 3 NA 1 0.0002 3 0.0001 2 NA 替换。

优势:pval列位于第3,第5,第7列...列..

1 个答案:

答案 0 :(得分:1)

这个应该有效:

awk 'BEGIN{ OFS = "\t" }NR==1{ for ( i = 1; i <= NF; i++) if ( $i ~"Pval" ) a[i]; print $0}NR>1{for ( i in a ) if ( $i > 0.5 ) $i = "NA"; print $0 }' file

输出:

Rv_FC    Rv_Pval  Gc_FC  Gc_Pval  
2        0.001     3      NA
3        NA        1      0.0002
3        0.0001    2      NA