Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^3: manipulating a data table

by kevbot (Priest)
on Aug 17, 2016 at 04:54 UTC ( #1169881=note: print w/replies, xml ) Need Help??


in reply to Re^2: manipulating a data table
in thread manipulating a data table

I was tempted to go for a Fortran web service with SQL (http://fortran.io), but I settled for a solution using Data::Table.

#!/usr/bin/env perl use strict; use warnings; use Data::Table; # Giving '0' as the second arg to Data::Table::fromTSV, # results in a Data::Table with column names of col1, col2 and col3 my $t = Data::Table::fromTSV("data.tsv", 0); my $nrow = $t->nofRow; my @row_numbers = 1..$nrow; # Sort by 'col2' as numeric values in decending order $t->sort( 'col2', 0, 1 ); # Add a new column that contains the row indices for the 'col2' sort o +rder $t->addCol( \@row_numbers, 'col2order' ); # Sort by 'col3' as numeric values in decending order $t->sort( 'col3', 0, 1 ); # Add a new column that contains the row indices for the 'col3' sort o +rder $t->addCol( \@row_numbers, 'col3order' ); # Sort by 'col1' as string values in ascending order $t->sort( 'col1', 1, 0 ); # Get a subtable with the columns of interest my $result = $t->subTable( undef, [ 'col1', 'col2order', 'col3order' ] + ); print $result->tsv; exit;
This input is in data.tsv:
a 23 11 b 24 15 c 16 19 d 8 2 e 40 41
The output is:
col1 col2order col3order a 3 4 b 2 3 c 4 2 d 5 5 e 1 1

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1169881]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (9)
As of 2018-06-24 17:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?



    Results (126 votes). Check out past polls.

    Notices?