Preencher valores ausentes em uma coluna no Arquivo A com os valores de coluna correspondentes do Arquivo B

1

Eu tenho 2 arquivos; Eu quero substituir os NAs do Arquivo A para uma coluna no Arquivo B.

File A

ENSG00000134539 131.178876666595 8.17899671725794 0.855069805781827    9.56529708095531 1.12E-21 1.74E-20 KLRD1
ENSG00000135250 1133.42737699143 -1.12767591222818 0.117927787197502 -9.56242747385385 1.15E-21 1.78E-20 SRPK2
ENSG00000214870 103.556102419252 -2.15426846253205 0.225384371016956 -9.55819808095733 1.20E-21 1.86E-20 NA
ENSG00000136153 249.119544948009 -1.32395826295328 0.138571556732024 -9.55432914356018 1.24E-21 1.93E-20 LMO7

File B

ENSG00000214870 AC004540.5 103.556102419252
ENSG00000267121 CTD-2020K17.1 231.295616750853
ENSG00000254733 RP11-317J19.1 53.0097117074116

Eu quero combinar o Arquivo A e o Arquivo B na primeira coluna e substituir os NAs na última coluna do Arquivo A pela segunda coluna no Arquivo B.

Eu tentei várias maneiras, mas como sou novo no Linux, não consegui realizar isso.

awk 'NR==FNR{A[$1]++;next} B[$7]==A[$2]' file1 file2

awk 'NR==FNR{ if (A[$1] in B[$1]) B[$7]==A[$2]}' file1 file2

O que há de errado com meus comandos?

    
por Saad 09.04.2018 / 11:59

1 resposta

1

Tente isto:

awk 'NR==FNR{a[$1]=$2; next} ($1 in a) && $NF=="NA"{$NF=a[$1]} 1' f2 f1
  • a[$1]=$2 usa a primeira coluna como chave e salva os dados da segunda coluna como valor
  • ($1 in a) && $NF=="NA" verificar se a primeira coluna é uma chave em a array e se a última coluna é NA
    • $NF=a[$1] altera a última coluna para o valor salvo em a array
  • 1 imprime os conteúdos dos registros de entrada
  • f2 f1 note a ordem dos arquivos de entrada. segundo arquivo seguido pelo primeiro arquivo
por 09.04.2018 / 12:08