Excluir linhas nas quais 5 ou mais colunas têm valores menores que 3

0

Eu tenho um conjunto de dados de RNAseq de featureCounts que eu fundei. Eu tenho 3 condições com 3 réplicas. Eu quero excluir linhas onde 5 ou mais colunas têm valores menores que 3 de expressão gênica

Aqui está uma amostra do meu conjunto de dados.

Gene_id. M1 M2 M3 W1 W2 W3 S1 S2 S3
ENSMUSG00000102693 18 4 5 8 0 2 1 0 0
ENSMUSG00000064842 1 0 0 0 0 0 1 1 2
ENSMUSG00000051951 25 23 32 54 78 77 48 56 33
ENSMUSG00000102851 0 0 0 0 0 0 0 0 0
ENSMUSG00000103377 0 10 0 2 5 0 6 7 8

Gostaria de importar este conjunto de dados para mais análises de DE em outra ferramenta para análise.

    
por Sam 19.11.2018 / 05:05

1 resposta

0

Pelo que entendi, você quer

awk '{
        count=0
        for (i=2; i<=NF; i++) if ($i < 3) count++
        if (count < 5) print
     }'

Para cada linha, defina um contador como zero. Então olhe para cada campo (coluna) diferente do primeiro (o Gene ID), e, se for menor que 3, conte. Então, se a contagem for menor que cinco, imprima a linha. Se cinco ou mais colunas tiverem valores menores que 3, pule a linha (isto é, apague-a).

Se você precisar recolher isso em uma única linha, você deve adicionar ponto e vírgula ( ; ) após as instruções (isto é, onde as quebras de linha estão na versão acima):

awk '{ count=0; for (i=2; i<=NF; i++) if ($i < 3) count++; if (count < 5) print; }'
    
por 19.11.2018 / 05:29