There is no error checking, so the file must be in the order you described.
It produced the following output.#!/usr/bin/perl use strict; use warnings; use List::Util 'sum'; # pm 1158142 open my $fh, '<', 'j2.txt' or die $!; my (undef, @percent) = split /[\s%]+/, <$fh>; #split on spaces and % s +ign my ($gene, @data) = split ' ', <$fh>; close $fh or die $!; my $limit = 10; my $start = 0; my @avgs; print join("\t", $gene, map {sprintf "Average_%d%%", 10 * $_} 1 .. 10) +, "\n"; for my $i (0 .. $#percent) { if ($percent[$i] <= $limit) { if ($percent[$i] == $limit) { push @avgs, sprintf "%.16f", sum(@data[$start..$i]) / ($i+1 - $start); if ($limit == 100) { print join("\t", @avgs), "\n"; @avgs = (); $limit = 10; $start = $i+1; } else { $limit += 10; $start = $i+1; } } } else { push @avgs, sprintf "%.16f", sum(@data[$start..$i-1]) / ($i - $start); $limit += 10; $start = $i; } }
Hope this helps.Gene1 Average_10% Average_20% Average_30% Average_40% A +verage_50% Average_60% Average_70% Average_80% Average_90 +% Average_100% 0.0085539803980398 0.0029112286228623 0.0125793829382938 0.01 +16449144914491 0.0184377812781278 0.0050317531753175 0.01067 +45049504950 0.0020127012701270 0.0106745049504950 0.02959749 +09990999 0.0136619722578318 0.0178790606333361 0.0063430585482791 0.01 +45855494640373 0.0112920382947386 0.0053672033870054 0.01976 +10670157925 0.0146378274191056 0.0108215366991245 0.02352507 +97807054 0.0164707828807572 0.0136918453750137 0.0079514124251931 0.01 +20488239300120 0.0010953476300011 0.0159028248503863 0.00821 +51072250082 0.0079514124251931 0.0071197595950071 0.01752556 +20800175 0.0201577409649362 0.0194378216447599 0.0078664354985117 0.00 +71113981627170 0.0184896352230643 0.0167161754343373 0.02133 +41944881511 0.0172078276529943 0.0066373049518692 0.03887564 +32895198 0.0104368645819806 0.0270142152808031 0.0038451606354665 0.01 +00641194183384 0.0158907148710607 0.0109861732441901 0.01059 +38099140405 0.0197751118395422 0.0143016433839546 0.02330638 +18108890 0.0068663582776188 0.0225118460673360 0.0068663582776188 0.01 +50078973782240 0.0101524011676221 0.0146482309922535 0.01633 +21236174791 0.0151059882107614 0.0163321236174790 0.04193383 +09097434 0.0157328709970234 0.0251269401749335 0.0044248699679128 0.01 +46968895362819 0.0151709827471297 0.0176994798716513 0.01469 +68895362819 0.0162245232156804 0.0194378216447599 0.03223833 +83376506 0.0095465981450263 0.0179928578674928 0.0052072353518326 0.00 +62765783258696 0.0234325590832465 0.0099805344243457 0.01046 +09638764493 0.0156217060554976 0.0133900337618551 0.01129784 +09865652 0.0101156314461855 0.0097543588945361 0.0036127255164948 0.00 +27869596841532 0.0104510988155744 0.0180636275824742 0.04250 +11351833357 0.0245665335121649 0.0195087177890721 0.02229567 +74732253 0.0117016829888117 0.0178659624204179 0.0053632713698720 0.00 +75225104928075 0.0042314121522042 0.0234033659776234 0.01457 +48640798146 0.0082886921170750 0.0155151778914155 0.03432145 +41234343 0.0051755175517552 0.0188536710813939 0.0074757475747575 0.01 +88536710813938 0.0088723158030089 0.0235773577357736 0.01219 +94342291372 0.0241524152415241 0.0199627105567700 0.03881638 +16381638 0.0256052955722923 0.0146810285424147 0.0083044201856083 0.01 +20117506256120 0.0120117506256120 0.0083044201856083 0.02202 +15428136220 0.0145327353248145 0.0073405142712073 0.02402350 +12512240 0.0163571912746830 0.0146463625954432 0.0144099065991255 0.01 +42708148365857 0.0105153372480105 0.0272619854578050 0.02516 +16998434537 0.0319354686791430 0.0255372476023112 0.02516169 +98434537
List::Util was added to perl core in version 5.08.
In reply to Re: Average columns based on header name
by Cristoforo
in thread Average columns based on header name
by jacobs.smith
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |