首页 > 解决方案 > 将每一列除以另一列

问题描述

我有

V1           V2      V3      V4            sites  var_homorefref  var_homodevdev  var_hetdevdev  var_hetrefdev
NC_044998.1  14582   80739   LOC100221041  596    1256            156             7              319
NC_044998.1  31388   68748   DCBLD2        338    617             88              4              171
NC_044998.1  80874   299341  CMSS1         2873   6246            1183            51             2024
NC_044998.1  112495  297570  FILIP1L       2434   5388            996             31             1736
NC_044998.1  287349  289742  LOC116808959  14     49              0               0              6
NC_044998.1  300404  343805  TBC1D23       364    909             158             3              305
NC_044998.1  333622  344667  NIT2          84     163             44              0              57
NC_044998.1  346168  368957  TOMM70        177    361             85              0              159
NC_044998.1  371654  380427  LNP1          116    308             66              6              126

我想$6-$9除以$5*11

我在尝试

awk 'BEGIN {FS=OFS="\t"} FNR>1 {for(i=6; i<=9; i++) print $1 OFS $2 OFS $3 OFS $4 OFS $5 OFS ($5?$i/($5*11):"0")}' file

但它只计算$6.

它也不会输出其中字段$i为的行0,而不是输出“ 0”并维护总行数。

标签: awk

解决方案


你可以使用这个awk脚本:

awk 'BEGIN {FS=OFS="\t"} NR>1 && $5!=0 {for (i=6; i<=9; ++i) $i /= ($5*11)} 1' file | column -t


V1           V2      V3      V4            sites  var_homorefref  var_homodevdev  var_hetdevdev  var_hetrefdev
NC_044998.1  14582   80739   LOC100221041  596    0.19158         0.023795        0.00106772     0.0486577
NC_044998.1  31388   68748   DCBLD2        338    0.165949        0.0236686       0.00107585     0.0459925
NC_044998.1  80874   299341  CMSS1         2873   0.197639        0.0374332       0.00161377     0.0640446
NC_044998.1  112495  297570  FILIP1L       2434   0.20124         0.0372003       0.00115784     0.064839
NC_044998.1  287349  289742  LOC116808959  14     0.318182        0               0              0.038961
NC_044998.1  300404  343805  TBC1D23       364    0.227023        0.0394605       0.000749251    0.0761738
NC_044998.1  333622  344667  NIT2          84     0.176407        0.047619        0              0.0616883
NC_044998.1  346168  368957  TOMM70        177    0.185413        0.0436569       0              0.0816641
NC_044998.1  371654  380427  LNP1          116    0.241379        0.0517241       0.00470219     0.0987461

推荐阅读