[Milan-pm] R: incolonnare dati
Max Flebus
max.flebus at it.easynet.net
Sun Nov 8 09:20:26 PST 2009
Ho rimesso un po' di escape ("\") che erano spariti nella mail dall'ottimo
esempio di Oha e aggiunta l'apertura dei file .xxx (ovviamente da modificare
con il suffisso giusto), tanto perchè Paola abbia la pappa pronta :)
Un po' di commenti non fanno mai male :)
MaX
use strict;
use warnings;
use Data::Dumper;
my %data;
my %cols;
while(<*.xxx>) # ottengo la lista dei file con suffisso .xxx
{
open "FILE", $_ or die; # Apro il file o morte!
while (<FILE>) # lo leggo
{
chomp;
my @cols = split /\s+/; # separo le colonne
my $first = shift @cols or next; # tengo la prima colonna
my $second = shift @cols; # e la seconda
my %other = map { /^([^(]+)\((\d+)\)\*?/; $cols{$2}++; ($2,$1); } @cols;
# il resto lo metto nell'hash %other ad esempio H380(138) diventa
$other{138} = H380
$other{__perc} = $second; # metto in %other anche il valore della
seconda colonna
$data{$first} = \%other; # metto in nell'hash $data l'hash %other
}
}
foreach my $k (sort keys %data) # $k sono tutti i valori della prima
colonna
{
my $other = $data{$k}; # recupero l'hash
print $k, "\t", $other->{__perc}, "\t"; # stampo l'intestazione della
riga
foreach my $c (sort { $a <=> $b } keys %cols) { # itero sulle colonne
(ordinate)
my $v = $other->{$c}; # prendo la colonna c
print $v ? "$v($c)\t" : "- \t"; # e ne stampo il valore o degli
spazi bianchi
}
print "\n"; # nuova riga
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/milan-pm/attachments/20091108/449515ab/attachment.html>
More information about the Milan-pm
mailing list