Re: Comparing 2 Columns
- From: John Denker <jsd av8n com>
- To: gnumeric-list gnome org
- Subject: Re: Comparing 2 Columns
- Date: Wed, 19 Aug 2020 03:02:40 -0700
Another version of the program. Output is more dense, less sparse.
Input is:
red
green white
black gray
blue black
white cyan
magenta
yellow
Output is:
blue cyan black
green gray white
red magenta
yellow
#! /usr/bin/perl -CS
use warnings;
use strict;
use Text::CSV 'csv';
use File::Temp;
use List::Util 'max';
main: {
my $ifile = 'csv-comm.gnumeric';
my $sheet = 'Sheet1';
my $dir = File::Temp->newdir(TEMPLATE => "temp-XXXXXXXX");
system "ssconvert -S $ifile $dir/csv-comm-%s.csv";
my $aoa = csv(in => "$dir/csv-comm-$sheet.csv");
my %rslt;
for my $col (0, 1) {
my $flag = 1<<$col;
checker: for my $row ($aoa->@*) {
my $val = $row->[$col];
next checker if $val eq '';
$rslt{$val} += $flag;
}
}
my @dense = (); ## an array of array-references
for my $val (sort keys %rslt) {
my $which = $rslt{$val};
push $dense[$which-1]->@*, $val;
}
my $top = max(map {0+$_->@*} @dense);
for (my $row = 0; $row < $top; $row++) {
for (my $col = 0; $col < 3; $col++) {
print shift($dense[$col]->@*) // '', ",";
}
print "\n";
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]