in reply to Re: for each unique value in a column find the max value..need perl script
in thread for each unique value in a column find the max value..need perl script
reformatted the date as below:
order mtime no size id day date
14098703993 154538.354300 200 1 101510
14098703993 154539.420000 200 1 101511
14098703994 154538.398200 487 1 100888
14098703994 154610.720000 487 1 91588
14098703995 154538.401200 200 1 101502
14098703995 154539.420000 200 1 101500
use List::Util qw(max min); my %id_hash; open (DATA, ".txt"); while (<DATA>) { chomp; my ($order, $mtime, $size, $id, $date) = split /\t/; push @{ $id_hash{$order}{$id}{mtime} }, $mtime; push @{ $id_hash{$order}{$id}{size } }, $size; push @{ $id_hash{$order}{$id}{date } }, $date; } open (OUT, ">output.txt"); for my $order (keys %id_hash) { for my $id (keys %{ $id_hash{$order} }) { my $Low = min( @ { $id_hash{$order}{$id}{mtime} } ); print OUT "$order $Low \n"; } }
Now the problem is this does not give duplicate order entires! I think I am unable to do the below: I want the duplicate order values as it is. Unable to replace the oldest mtime into the date field.
So now I am doing the below stupid code which will be the loooongest code of my life...:
Hope it makes sense to you.. am not an expert in Perl.. just trial and error guys.. but now really need ur help...plzzz!open (OUT, ">output.txt"); open (IN, "input1.txt");->original file1 with all data while($line=<IN>){ chomp($line); ($Date,$MTime,$inserdate,$inserttime,$Id,$Phase,$Size,$day,$order) += split(/ /,$line); open (INL, "file2.txt");-->contains the sorted order values of order v +alues($x) from file 1 while($linel=<INL>){ chomp($linel); ($x,$y,$z,$q,$t)= split(/ /,$linel); if($x == $order) { #print OUT "$a $x $b $z $q $t \n"; print OUT $Date," ",$M_Time," ",$inserdate," ",$y," ",$Id," ",$Pha +se," ",$Size," ",$day," ",$order,"\n"; } } } close(INL); close(IN); close(OUT); print "DONE";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: for each unique value in a column find the max value..need perl script
by martell (Hermit) on May 31, 2011 at 21:14 UTC | |
by qmenon (Initiate) on Jun 01, 2011 at 08:08 UTC | |
|
Re^3: for each unique value in a column find the max value..need perl script
by ww (Archbishop) on Jun 01, 2011 at 01:23 UTC | |
by qmenon (Initiate) on Jun 01, 2011 at 08:24 UTC | |
by qmenon (Initiate) on Jun 01, 2011 at 08:14 UTC |