Como encontrar as mesmas linhas e mesclar os valores?

4

Eu tenho a seguinte tabela tabular separada:

NM_000057   0
NM_000059   0
NM_000060   0
NM_000061   0
NM_000062   0
NM_000063   0
NM_000063   0
NM_000063   3
NM_000063   2
NM_000063   0
NM_000063   0
NM_000063   0
NM_000064   0
NM_000065   0
NM_000066   0
NM_000067   0
NM_000068   0
NM_000069   0
NM_000070   0

Eu quero procurar o primeiro valor, se houver mais de um igual, quero mesclar e adicionar os valores da segunda coluna. No exemplo:

NM_000057   0
NM_000059   0
NM_000060   0
NM_000061   0
NM_000062   0
**NM_000063 5**
NM_000064   0
NM_000065   0
NM_000066   0
NM_000067   0
NM_000068   0
NM_000069   0
NM_000070   0

Obrigado!

    
por Joan Gibert Fernandez 26.09.2016 / 11:56

2 respostas

2

Use 'awk',

awk '{seen[]+=} END{for (x in seen) print x, seen[x]}' infile > outfile

No comando awk acima, main esta parte 'visto [$ 1] + = $ 2' faz o trabalho, a variável $ 1 como o campo chave suming o valor da segunda coluna quando a chave correspondente é vista.

E no final, estamos dando voltas no array visto com x como variável e imprimimos as chaves vistas na primeira coluna e depois o resultado da soma de cada chave visto [x].

    
por αғsнιη 26.09.2016 / 12:05
1

Tendo descoberto recentemente o GNU Datamash , vou lançar

datamash groupby 1 sum 2 < input

Se seus dados ainda não estiverem classificados, talvez seja necessário adicionar a opção -s e, se estiver separada por outro espaço em branco (em vez de guias), adicione -W

    
por steeldriver 26.09.2016 / 12:18