Note that there are some explanatory texts on larger screens.

plurals
  1. POMapping values with Column header and row header
    text
    copied!<p>I have some files with below data.</p> <p>sample File 1:</p> <pre><code>sitename1,2009-07-19,"A1",11975,17.23 sitename1,2009-07-19,"A2",11,0.02 sitename1,2009-07-20,"A1",2000,17.23 sitename1,2009-07-20,"A2",538,0.02 </code></pre> <p>I want to map the values in column 4 with column 2 and 3 as shown below.</p> <p>Output required.</p> <pre><code>Site,Type,2009-07-19,2009-07-20 sitename1,"A1",11975,2000 sitename1,"A2",11,538 </code></pre> <p>Here is what I have tried so far:</p> <pre><code>#! /usr/bin/perl -w use strict; use warnings; my $column_header=["Site,Type"]; my $position={}; my $last_position=0; my $current_event=[]; my $events=[]; while (&lt;STDIN&gt;) { my ($site,$date,$type,$value,$percent) = split /[,\n]/, $_; my $event_key = $date; if (not defined $position-&gt;{$event_key}) { $last_position+=1; $position-&gt;{$event_key}=$last_position; push @$column_header,$event_key; } my $pos = $position-&gt;{$event_key}; if (defined $current_event-&gt;[$pos]) { dumpEvent(); } if (not defined $current_event-&gt;[0]) { $current_event-&gt;[0]="$site,$type"; } $current_event-&gt;[$pos]=$value; } dumpEvent(); my $order = []; for (my $scan=0; $scan&lt;scalar(@$column_header); $scan++) { push @$order,$scan; } printLine($column_header); map { printLine($_) } @$events; sub printLine { my $record=shift; my @result=(); foreach my $offset (@$order) { if (defined $record-&gt;[$offset]) { push @result,$record-&gt;[$offset]; } else { push @result,""; } } print join(",",@result)."\n"; } sub dumpEvent { return unless defined $current_event-&gt;[0]; push @$events,$current_event; $current_event=[]; } </code></pre> <p>The output i am getting is as below.</p> <pre><code>*Site,Type,2009-07-19,2009-07-20* sitename1,"A1",11975, sitename1,"A2",11, sitename1,"A1",,14620 sitename1,"A2",,538 </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload