Script para Filtragem e soma de dados em arquivos CSV - Perl

1. Script para Filtragem e soma de dados em arquivos CSV - Perl

Pablo Augusto de Souza Fonseca
pasf2009

(usa CentOS)

Enviado em 19/10/2013 - 17:33h

Boa tarde,

Sou novo no uso da linguagem perl e estou querendo algumas sugestões de como gerar um script para realizar a filtragem e soma de alguns dados que possuo em uma tabela .csv. Possuo uma tabela com colunas de valores aferidos para N individuos. Nessa tabela, um mesmo individuo pode ter mais de um valor para cada medida.
Ex.:

individuo medida1 medida2
1 5 6
1 6 7
1 10 12
2 11 13
2 12 15
3 15 16
3 17 18
3 19 25


A partir dos dados, eu gostaria de gerar um arquivo contendo a soma dos valores, de cada indivíduo, para uma determinada medida em um determinado intervalo. Por exemplo, a soma dos valores da medida2 entre 15 e 20 para os três indivíduos. Que nesse caso seria: individuo 1=0; individuo2= 15; individuo3= 34.

Qual forma vocês sugerem ?

Muito obrigado.


  


2. Re: Script para Filtragem e soma de dados em arquivos CSV - Perl

Daniel Vinciguerra
dvinciguerra

(usa Debian)

Enviado em 07/12/2013 - 23:32h

Beleza cara!?

Poderia dar mais informações sobre este problema!?

Não entendi muito bem o seu problema ou o que quer/como quer fazer o calculo dos valores, mas para começar de uma forma simples pode fazer desse jeito:


#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;

while(<DATA>){
    chomp;

    # parse row
    my ($individuo, $v1, $v2) = split /;/, $_;
    
    #TODO do something
    
    # output line
    say $_;
}

__DATA__
1;5;6
1;6;7
1;10;12
2;11;13
2;12;15
3;15;16
3;17;18
3;19;25 

 


Se não quiser pegar os dados de <DATA> e quiser pegar de um arquivo, pode dar um open no arquivo e pegar os valores linha a linha.

Para fazer a leitura do arquivo recomendo os modulos:

IO::File
https://metacpan.org/pod/IO::File


use IO::File;
 
my $fh = new IO::File;
if ($fh->open("< arquivo.csv")) {
    # do something ...
    $fh->close;
}
 



IO::All
https://metacpan.org/pod/release/INGY/IO-All-0.50/lib/IO/All.pod


use IO::All;

my $file < io "arquivo.csv";
 



Esse ultimo em especial tem uma api bem bacana, simples e com muita coisa útil!



Abraço,






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts