ここで少し助けが得られるかどうか興味があります。私は perl の初心者で、次のコードを分析にもう少し役立つコードに変換する方法がわかりません。
このコードは現在、ユーザーが提供したデータ ファイルのリストから 1 列目と 4 列目を取得し、それらをまとめています。
このコードによって生成された「現在の出力」の各行 (以下を参照) に対して、コードで実行したいことは、これらの 4 番目の列の値 (filea、fileb、filec) の合計を作成することです。これを実装する方法がよくわかりません...
現在の出力:
filea fileb filec
entrya | 0 |10.2 | 0
entryb | 0 | 0.0 | 1
entryc | 8 | 57.0| 46
希望の出力
sum
entrya | 10.2
entryb | 1
entryc | 111
現在のコードは次のようになります。
main: {
my %data;
foreach my $file (@rsem_files) {
open (my $fh, $file) or die "Error, cannot open file $file";
my $header = <$fh>; # ignore it
while (<$fh>) {
chomp;
my @x = split(/\t/);
my $acc = $x[0];
my $count = $x[4];
$data{$acc}->{$file} = $count;
}
close $fh;
}
my @filenames = @rsem_files;
foreach my $file (@filenames) {
$file = basename($file);
}
print join("\t", "", @filenames) . "\n";
foreach my $acc (keys %data) {
print "$acc";
foreach my $file (@rsem_files) {
my $count = $data{$acc}->{$file};
unless (defined $count) {
$count = "NA";
}
print "\t$count";
}
print "\n";
}
exit(0);
}