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的数字的以此迭代,可以换成任意递增的数字。