我们在做数据分析的时候,偶尔会遇到这样的问题,比如把基因型纯合杂合分别编码为0 1 2,当某一个snp基因型全是1或者0的时候,在做下面的分析的时候会报错,这时候就需要去掉这些行
如果只有四列可以用下面的命令
sed -i '/0 0 0 0/d' filename
#但是对于多列数据这样做就比较费时,可以用下面的代码解决(同时去掉全0的行和列)
awk '{show=0; for (i=1; i<=NF;i++) {if($i!=0)show=1;col[i]+=$i;}}show==1{tr++;for(i=1;i<=NF;i++)vals[tr,i]=$i;tc=NF}END{for(i=1;i<=tr;i++) {for(j=1;j<=tc;j++) {if(col[j]>0) printf("%s%s", vals[i,j], OFS)} print ""; } }' file>outfile
网友评论