Amount,ChoiceId,Allowed PID,AmountId,MultiplyingFactor,PF new,ServiceTax,ExtraTalkTime,MRP,Recharge Type,FRC/SRC
13,na,285,100,1.1236,81.75,0.02,0,92,Freebie(BA)+PID,Normal
59,na,285,101,1.1236,8.31,0.07,0,10,Freebie(BA)+PID,Normal
13,na,289,100,1.1236,81.75,0.05,0,92,Freebie(BA)+PID,Normal
2001,na,285,103,1.103,27.13,2.06,0,52,MA+DataPack+PID,Normal
1572,na,285,104,na,0,na,na,na,"Blank MRP,rest OK",Normal
1574,na,285,105,na,0,na,na,na,"Blank MRP,rest OK",Normal
333300,na,285,106,1,0,0,0,3333,Freebie(BA)+MA+PID ,Normal
93,na,285,107,1.1236,100.53,0.11,0,114,Freebie(BA)+PID+SA,Normal
78,na,285,108,1.1236,8.12,0.1,0,10,Freebie(BA)+PID,Normal
79,na,285,109,1.1236,85.54,0.1,0,97,BA20 only,Normal
13,na,290,100,1.1236,81.75,0.11,0,92,Freebie(BA)+PID,Normal
####
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Table;
my $dt = Data::Table::fromCSV("data.csv");
# print "DATA:\n";
# print $dt->csv;
# All of the columns except the ones you want to aggregate
my $cols = [
'Amount',
'AmountId',
'MRP',
'ChoiceId',
'MultiplyingFactor',
'PF new',
'ExtraTalkTime',
'Recharge Type',
'FRC/SRC'
];
my $mdt = $dt->melt( $cols );
# print "MELT:\n";
# print $mdt->csv;
my $cdt = $mdt->cast(
$cols,
'variable',
Data::Table::STRING,
'value',
\&aggregate
);
#print "CAST:\n";
#print $cdt->csv;
exit;
sub aggregate {
my @values = @_;
my $av = join(';', @values);
return($av);
}
####
Amount,AmountId,MRP,ChoiceId,MultiplyingFactor,PF new,ExtraTalkTime,Recharge Type,FRC/SRC,Allowed PID,ServiceTax
13,100,92,na,1.1236,81.75,0,Freebie(BA)+PID,Normal,285;289;290,0.02;0.05;0.11
59,101,10,na,1.1236,8.31,0,Freebie(BA)+PID,Normal,285,0.07
2001,103,52,na,1.103,27.13,0,MA+DataPack+PID,Normal,285,2.06
1572,104,na,na,na,0,na,"Blank MRP,rest OK",Normal,285,na
1574,105,na,na,na,0,na,"Blank MRP,rest OK",Normal,285,na
333300,106,3333,na,1,0,0,Freebie(BA)+MA+PID ,Normal,285,0
93,107,114,na,1.1236,100.53,0,Freebie(BA)+PID+SA,Normal,285,0.11
78,108,10,na,1.1236,8.12,0,Freebie(BA)+PID,Normal,285,0.1
79,109,97,na,1.1236,85.54,0,BA20 only,Normal,285,0.1