У меня есть файл csv (очень большой) со следующим форматом.perl вычислять разницу в столбцах в файле csv
key1,val1,val2,val3... ,valn
key2,val2,val5,val1....,valn
...
...
keyn,val7,val9,val11....,valn
key1,val2,val4,val8.....,valn
key2,val10,val12,val14..., valn
...
...
keyn,val2,val4,val8.....,valn
key1,val3,val5,val7... ,valn
key2,val0,val9,val3....,valn
key1 to keyn (и их значения) повторяется несколько раз в файле csv.
значения (val1, valn) являются double (float).
то, что я хочу, чтобы напечатать:
1) С самого начала файла, для каждого ключа я хочу, чтобы вычислить разницу между значениями столбцов (val2, val4, val6, например) к следующему вхождению ключа ,
так, например
key1,2,4,6
key2,3,5,7
...
...
key1,4,6,8
key2,4,6,8
Я хочу напечатать
key1: Diff из предыдущей записи является key1,2,2,2 key2: Diff из предыдущей записи является key2,1,1, 1 ..
Keyn: Diff из предыдущей записи является ...........
2) Сделайте это несколько раз в течение каждого последовательных появлений о f каждый ключ.
Вот что я придумал, чтобы (хранящих значения в хэш)
#!/usr/bin/perl
my %hash;
open my $fh, '<', 'file1.csv' or die "Cannot open: $!";
while (my $line = <$fh>) {
$line =~ s/\s*\z//;
my @array = split /,/, $line;
my $key = shift @array;
$hash{$key} = \@array;
}
close $fh;
жаль ... за плохой идентификатор - :) это был быстрый пост ... у меня действительно есть адрес электронной почты – 2010-11-22 17:50:37
@mystery_man Я думаю, вы в хорошей компании http://en.wikipedia.org/wiki/Austin_Powers:_International_Man_of_Mystery. Что еще более важно, вы не очень хорошо объяснили свою проблему. – 2010-11-22 17:56:57
Это чувствует себя знакомым. Домашнее задание? – 2010-11-22 18:02:05