depending on how large your dataset is, you may be able to do it with perl hashes- something like this:


perl -e '

while ($line=<STDIN>){
   chomp($line);($key,$percent,$value)=split(/,/,$line);
   $hash{$key}->{value}+=$percent;
}
foreach $key (keys(%hash)){
   foreach $value(keys(%$key)){
      $max{$key}=$hash{$key}->{$value} if($hash{$key}->{$value} >$max{key});

   }
   foreach $key(keys(%hash)){ print "$key,$max{$key}\n"}
}


or something like that.

On Fri, 1 Oct 2004, Dylan Beaudette wrote:

Greetings,

I have a flat text file with records with the following properties:
key, percent, class

For any given key, there may be more than one record - with any 1 of 12 possible classifications. The records occur in 2 types of patterns:

1) For a given key, it is clear which class is 'dominant' , as its percentage is the highest:
------------------------
458986,60,Inceptisols
458986,25,Mollisols
------------------------


2) For a given key, it is not alway clear which class is dominant, as some simple addition needs to be done in order to calculate the dominant class
------------------------
458987,30,Inceptisols
458987,30,Inceptisols
458987,20,Mollisols
------------------------


For the first instance the dominant class could easily be extracted by sorting the records, but the second instance requires some addition and comparison... As the data is often more like the second instance, a generalized addition and comparison of classes for each unique key would be ideal.

I am wondering what the best tool for doing this would be... I would like to keep the operation done with a minimal set of tools (i.e. bash and awk, python, perl) ... but unfortunatley I have not been able to get the program logic with bash quite right (i am more used to C style languages...)

I know this is a littlew vague but any ideas on how to aggregate the various classes, and then compare them would be greatly appreciated!

Thanks in advance!

Dylan
_______________________________________________
vox-tech mailing list
[EMAIL PROTECTED]
http://lists.lugod.org/mailman/listinfo/vox-tech

_______________________________________________
vox-tech mailing list
[EMAIL PROTECTED]
http://lists.lugod.org/mailman/listinfo/vox-tech

Reply via email to