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