Chr start stop superfamily TE pres/abs 88 108 139 159 265 350 351 403 410 424 428 430 506 544 546 6
1 8667 8700 MuDR ATDNAI27T9A presence NA 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0
1 10585 10600 Gypsy ATHILA6A presence NA 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0
1 15091 15099 Copia ATCOPIA13 presence 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 15894 15898 Gypsy ATGP1 presence 0 0 NA 0 NA 0 0 0 0 0 1 0 0 0 0 NA 1
1 20514 20532 MuDR VANDAL8 presence NA 0 NA NA NA NA NA 1 0 NA NA NA 0 0 0 NA NA
1 20530 20537 Gypsy ATGP1 presence NA 0 0 NA NA NA NA 1 0 NA NA NA 0 0 0 NA NA
以下是我试图获得“0”和“1”的频率
cat file.bed|awk '{if(NR>1){for (i = 1; i <= NF; i++) if($i==0)print}}'|awk '{count=0;if(NR==1){print $0"\tcount"}else{for (i=8; i<=NF; i++){if ($i==1){count++}}print $0"\t"count}}' > x
我的代码没有给我正确的输出
如何更正我的代码,以便在输出文件的末尾添加三列,从而得到 0、1 和 NA 的计数?
0、NA 和 1 需要从第二行开始计数。在第 0 列中,NA 和 1 需要从第 7 列开始计算
期望的输出:
Chr start stop superfamily TE pres/abs 88 108 139 159 265 350 351 403 410 424 428 430 506 544 546 6 count0 count1 countNA freq0 freq1 freqNA
1 8667 8700 MuDR ATDNAI27T9A presence NA 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 14 0 2 0.87 0 0.12
NAs
变量计算“NA”的出现次数。ones
变量计算“1”的出现次数。计算第 7个total
最后一个字段的总访问字段(这可以删除,但为了清楚起见,我使用了*)。是“0”的计数(通过从总数中减去一个和 NA)。 重置下一行的变量。total-ones-NAs
NAs=ones=total=0
*:我们可以删除
total++
并替换total-ones-NAs
为NF-6-ones-NAs
.