2017-11-06 5 views
-2

フォーマットを変更し、欠落しているフィールドを "??"としてコード化するために、いくつかのawkとsedコマンドとGNU datamashを試しました。成功していないこのデータファイルのその後、私はこのAWKを試した私が最初に試さファイルを転記して不足しているフィールドを埋める

  SNP_1  SNP_2 SNP_3  SNP_4 
    ind_1  AA  AB  AA   ?? 
    ind_2  AA  AA  ??   ?? 
    ind_3  AB  AA  AB   AA 

GNU datamash

 datamash --no-strict transpose < input1.txt 

を使用して::

ind_1  SNP_1 AA 
ind_1  SNP_2 AB 
ind_1  SNP_3 AA 
ind_2  SNP_1 AA 
ind_2  SNP_2 AA 
ind_3  SNP_1 AB 
ind_3  SNP_2 AA 
ind_3  SNP_3 AB 
ind_3  SNP_4 AA 

希望のフォーマット:私は、次のような形式のファイルを持っている

awk ' 
     !b[$1 FS $2]++{ 
    a[++i]=$1 FS $2 
    } 
    { 
    c[$1 FS $2]=c[$1 FS $2]?c[$1 FS $2] FS $4:$4 
     } 
    END{ 
for(k=1;k<=i;k++){ 
    print a[k],c[a[k]] 
}} 
' Input1_txt 
+1

のために動作します。 –

+0

これとPythonとPerlとの関係は何ですか?あなたはどんな問題を抱えていますか? –

+0

PythonやPerlがこの問題を解決できるかどうか疑問に思う –

答えて

0

救助に!真の多次元配列と

それが容易になるだろうが、これはあなたが私たちにあなた自身のため、この問題を解決するために書かれているコードを表示する必要がある最もawk

awk -v OFS='\t' '{vals[$1]; cols[$2]; a[$1,$2]=$3} 
      END {for(j in cols) printf "%s", OFS j; 
        print ""; 
        for(i in vals) 
        {printf "%s", i; 
        for(j in cols) printf "%s", OFS (((i,j) in a)?a[i,j]:"??"); 
        print ""}} 
+0

ご協力ありがとうございます。何らかの理由で、一部の行の一部のフィールドが空のままで、 "??" –

+0

入力したサンプル入力を試しましたか? Windowsからコピーした場合、ファイルに偽のキャリッジリターンがないことを確認してください。 – karakfa

関連する問題