linux 中awk语句统计pav矩阵中基因的存在频率

 

001、测试数据如下:

[root@PC1 test2]# ls
a.txt
[root@PC1 test2]# cat a.txt
1       0       1       0       1       0       1       1
1       1       1       1       1       0       0       0
0       0       1       0       0       0       1       0
0       1       1       0       0       0       1       1

 

以上测试数据中,行为样本,也就是以此为样本1一直到样本4, 列为gene, 矩阵中1表示的是基因的存在, 0表示基因的缺失。

 

002、统计每一个基因在该群体中的存在频率, 实质就是统计每一列中1所占的百分率,这个可以使用awk语句来实现,如下:

[root@PC1 test2]# ls
a.txt
[root@PC1 test2]# cat a.txt
1       0       1       0       1       0       1       1
1       1       1       1       1       0       0       0
0       0       1       0       0       0       1       0
0       1       1       0       0       0       1       1
[root@PC1 test2]# for i in {1..8}; do awk -v a=$i '{ay[$a]++} END {print ay["1"]/NR}' a.txt ; done   ## 输出每一个基因存在频率,第一行对应的是第一列的存在频率, 第二行对应的是第二列的存在频率。。。
0.5
0.5
1
0.25
0.5
0
0.75
0.5

 

 以上语句中for i in {1..8} 是对1到8的数字的以此迭代,可以换成任意递增的数字。

 

posted @ 2023-03-10 18:48  小鲨鱼2018  阅读(29)  评论(0编辑  收藏  举报