Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Doing pair-exclusivity analysis and building a matrix

by tangent (Priest)
on Mar 28, 2012 at 02:25 UTC ( #962050=note: print w/replies, xml ) Need Help??


in reply to Doing pair-exclusivity analysis and building a matrix

This is probably a bit long-winded but does seem to work:
my (@names,%hash,%matrix); while (my $line = <DATA>) { chomp($line); my ($name,$list) = split(m/\s+/,$line); push(@names,$name); $hash{$name} = [ split(',',$list) ]; } for my $name (@names) { my $countries = $hash{$name}; for my $name2 (@names) { my $diff = get_diff($countries,$hash{$name2}); push( @{ $matrix{$name} }, $diff ); } } sub get_diff { my ($x,$y) = @_; my (%union,%isect); for my $item (@$x,@$y) { $union{$item}++ && $isect{$item}++; } return scalar @$x - scalar keys %isect; } print "ID\t" . join("\t",@names) . "\n"; for my $name (@names) { print "$name\t" . join("\t", @{ $matrix{$name} } ) . "\n"; } __DATA__ Name1 USA,Canada,Yemen Name2 Canada,Portugal,India Name3 China,HongKong,Canada Name4 London,Amsterdam,Ireland,USA Name5 India,USA,Canada
Output:
ID Name1 Name2 Name3 Name4 Name5 Name1 0 2 2 2 1 Name2 2 0 2 3 1 Name3 2 2 0 3 2 Name4 3 4 4 0 3 Name5 1 1 2 2 0

Replies are listed 'Best First'.
Re^2: Doing pair-exclusivity analysis and building a matrix
by angerusso (Novice) on Mar 28, 2012 at 02:46 UTC
    THANK YOU SO MUCH!!! Wow, thanks so much for your quick reply and it works beautifully!~

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://962050]
help
Chatterbox?
[choroba]: LanX was there a way to recover the numbers from the remaining information?
[Corion]: LanX: Ow ;)
Discipulus manual work: i just tell the same to my boss: every time the quick solution is to assign some manual data entry task to my group.. because we have not direct access to many databases here..
[LanX]: point is: in high speed trade each bank has to remember what he has to get from the others... so dresdner got billed for losses but couldn't claim gains
Discipulus is this the IT?
[Corion]: Discipulus: Well, in many cases it doesn't make sense to build an interface and complicated program just to enter 20 rows into a database ;) But yes, automating data imports should pay off in the long run
[LanX]: Choroba: this happened before I joined, was still in uni, but my boss was summoned to the CEO of the second biggest German bank at that time and could only say " I told them its not ready" ;)

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (9)
As of 2017-03-29 12:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should Pluto Get Its Planethood Back?



    Results (350 votes). Check out past polls.