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
A seguir está o que eu tentei obter a frequência de '0' e '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
Meu código não está me dando a saída correta
Como posso corrigir meu código para obter três colunas adicionadas no final do meu arquivo de saída, o que me dá a contagem de 0, 1 e NA?
0, NA e 1 precisam ser contados na segunda linha em diante. Nas colunas 0, NA e 1 precisam ser contados na sétima coluna em diante
Saída desejada:
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
variável conta as ocorrências de "NA"s.ones
variável conta as ocorrências dos "1"s.total
conta o total de campos visitados do 7º -último campo (isso pode ser removido, mas usei para maior clareza * ).total-ones-NAs
é a contagem de "0"s (subtraindo uns&NAs do total).NAs=ones=total=0
redefine as variáveis para a próxima linha.*: podemos remover
total++
e substituirtotal-ones-NAs
porNF-6-ones-NAs
.