如何计算每列中大于 x 的数字出现的次数?

如何计算每列中大于 x 的数字出现的次数?

我试图弄清楚如何计算每列中大于某个数字(即 0.1)的值出现的次数,然后为每列打印该值。这里是一些示例数据,除了这需要是通用的,即适用于任意数量的列:

Data     Sample1     Sample2     Sample3
row1      0.05         0.12        5.00 
row2      0.00         5.00        8.75
row3      1.19         0.00        6.78

然后所需的输出可能类似于(计算大于 0.1 的数字):

Sample1:  1
Sample2:  2
Sample3:  3

Perl、awk 或 coreutils 都可以,我只需要将其构建到 bash 脚本中即可在数据表上输出一些统计信息。

我可以数一列,但我不知道如何计算所有列:

gawk -F"\t" 'NR>1 {if ($2>0.1) print $1;}' | wc -l

先谢谢您的帮助。

答案1

你就快到了,只需在循环中执行即可:

awk '{for(i=2;i<=NF;i++){if(NR==1)h[i]=$i;else if($i>0.1)x[i]++}}END{for(i in x){print h[i]": "x[i]}}'

相关内容