我想计算从下面的数据的总和和比值。 (实际的数据包含超过200000列和45000行(线))。
为了清楚目的,我给了只有简单的数据格式。
#Frame BMR_42@O22 BMR_49@O13 BMR_59@O13 BMR_23@O26 BMR_10@O13 BMR_61@O26 BMR_23@O25
1 1 1 0 1 1 1 1
2 0 1 0 0 1 1 0
3 1 1 1 0 0 1 1
4 1 1 0 0 1 0 1
5 0 0 0 0 0 0 0
6 1 0 1 1 0 1 0
7 1 1 1 1 0 0 0
8 1 1 1 0 0 0 0
9 1 1 1 1 1 1 1
10 0 0 0 0 0 0 0
列需要用一定的标准来选择。
这是我考虑的列数据是唯一的“@ O13”栏目。 下面我已经从例如上面给出的选定列。
BMR_49@O13 BMR_59@O13 BMR_10@O13
1 0 1
1 0 1
1 1 0
1 0 1
0 0 0
0 1 0
1 1 0
1 1 0
1 1 1
0 0 0
从选定的专栏中,我想计算:
1)中的所有“1”的总和。 在这个例子中,我们得到值16。
2)含有的“1”(至少一次)发生总的行数。 从上面的例子有含有的“1”的至少一个发生8行。
最后,
3)总的所有“1”,总线以“1”发生的比率。
也就是说::(所有“1”的)/(具有“1”的次数总行)。 例如16/8
作为一个开始,我试图用这个命令只选择“@ O13”列
awk '{for (i=1;i<=NF;i++) if (i~/@O13/); print ""}' $file2
虽然这种运行,但不显示的值。