2017-03-10 5 views
0

File1には3つの列があります。マトリックス表の作成方法

pathway1 
pathway2 
pathway3 
pathway4 
pathway5 
pathway6 

出力:

group1 pathway1 0.664 
group1 pathway6 1 
group1 pathway2 0.056 

group2 pathway2 0.321 
group2 pathway3 0.771 

File2のは、すべての経路のリストを持っている:どのように列1は、COLUMN2は、特定のグループに属する代謝経路の名前を持つグループがあり、カラム3は、各経路のためのいくつかの値を持っていますawk

  group1 group2  
pathway1 0.664 
pathway2 0.056 0.321 
pathway3   0.771 
pathway4 
pathway5 
pathway6 1 
+0

あなたがしようとしている言語に言及してください? –

+0

@MausamSinha私はLinuxの初心者です。それほど複雑ではないソリューションもありがとう! –

+0

あなたは人々にあなたのコードを書くことを望んでいるだけでなく、[同じ質問](http://unix.stackexchange.com/questions/350437/how-to-form-a-matrix-テーブル)を何度も繰り返してコードを取得します。 –

答えて

1

次のようになりマトリクス表を取得3210
awk 'BEGIN { print "\t group1\tgroup2";b[1];b[2] } 
    FNR==NR{ if ($1 == "group1") a[$2"@"1]=$3; 
       if ($1 == "group2") a[$2"@"2]=$3 } 
    FNR!=NR { printf $1" "; 
       for (j in b) { 
        if ($1"@"j in a) printf a[$1"@"j]"\t" ; 
        else printf "\t"};print "" }' File1 File2 

出力:

  group1 group2 
pathway1 0.664 
pathway2 0.056 0.321 
pathway3  0.771 
pathway4 
pathway5 
pathway6 1 
0

はFile1 - すべての経路の>リスト - >は3つのCOLS、ファイル2を持っています。

perl -wMstrict -Mvars='*h' -lane ' 

     # Step: Gather data & populate the hash 
     if (@ARGV) { 
      next if @F < 3; 
      my($group, $pathway, $value) = @F; 
      $h{ $group }{ $pathway } = $value; 
     } else { 
      push @h, $_; 
     } 

     END{ 
      my @data; 

      # Step: Prepare the tabular data 
      for my $pathway (@h) { 
      my @line = ($pathway); 

      for my $group (sort keys %h) { 
       push @line, $h{ $group }{ $pathway } ||= q||; 
      } 

      push @data, [join ",", @line]; 
      } 

      # Dynamiclly build the tbl template 
      print for(
      q{.TS}, 

      join(",", qw/ allbox center /, q/tab(,);/), 

      ("c " x (1+keys %h)), 

      (qw/l/, "n " x (-1+keys %h), qw/n./), 

      join(",", q{}, sort keys %h), 

      join("\n", map { @$_ } @data), 

      q{.TE}, 
     ); 
     } 
' file1 file2 \ 
| tbl - | nroff -Tascii -ms | grep '.' 

出力

  +---------+--------+--------+ 
      |   | group1 | group2 | 
      +---------+--------+--------+ 
      |pathway1 | 0.664 |  | 
      +---------+--------+--------+ 
      |pathway2 | 0.056 | 0.321 | 
      +---------+--------+--------+ 
      |pathway3 |  | 0.771 | 
      +---------+--------+--------+ 
      |pathway4 |  |  | 
      +---------+--------+--------+ 
      |pathway5 |  |  | 
      +---------+--------+--------+ 
      |pathway6 | 1  |  | 
      +---------+--------+--------+ 
関連する問題