in reply to Doing pair-exclusivity analysis and building a matrix
T'aint pretty, but I think this is what you asked for:
#! perl -slw use strict; use Data::Dump qw[ pp ]; my %names = map{ my( $name, $rest ) = split; $name, { map{ $_, undef } split ',', $rest }; } <DATA>; my @sortedKeys = sort keys %names; print "\t", join "\t", @sortedKeys; for my $i ( @sortedKeys ) { printf "%s\t", $i; for my $j ( @sortedKeys ) { my $nCitiesI = keys %{ $names{ $i } }; my $nMatchingCitiesJ = grep{ exists $names{ $j }{ $_ } } keys %{ $names{ $i } }; printf "%d\t", $nCitiesI - $nMatchingCitiesJ; } print ''; } __DATA__ Name1 USA,Canada,Yemen Name2 Canada,Portugal,India Name3 China,HongKong,Canada Name4 London,Amsterdam,Ireland,USA Name5 India,USA,Canada
Produces:
C:\test>junk.pl 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:49 UTC | |
by BrowserUk (Patriarch) on Mar 28, 2012 at 03:51 UTC |