Bonjour,
J'ai un tableau ne contenant que des 1 et 0. Il est possible d'avoir 2 fois le même éléments. Dans ce cas, je souhaiterai n'avoir l'élément qu'une seule fois et faire la somme de chaque colonne et remplacer quand la somme de la colonne est égale à 2 le résultat par 1. Mon souci est dans le calcul de la somme de chaque colonne.
Si vous pouvez m'aider merci
Voiçi mon code :gene1 1 0 1
gene2 0 1 1
gene3 1 1 0
gene1 0 0 1
intermédiare
gene1 1 0 2
gene2 0 1 1
gene3 1 1 0
gene1 0 0 1
final
gene1 1 0 1
gene2 0 1 1
gene3 1 1 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 open my $fh, '<', $fichier or die "Impossible de lire le fichier $fichier\n"; my %data; my $i=0; my $j=0; while(my $ligne = <$fh>){ $i++; chomp $ligne; if($ligne =~ /gene.*/){ $j++; my ($gene,$champ1,$champ2,$champ3) = split "\t", $ligne; my $element =$champ1."\t".$champ2."\t".$champ3; push @{$data{$gene}}, [$element]; } } for my $id (keys %data) { my @array = @{$data{$id}}; $data{$id} = \@array; } print Dumper \%data; for my $id (keys %data) { print "--$id\n"; my @array = @{$data{$id}}; for my $pair (@array) { print ("\tstart : $pair->[0]\n"); #faire la somme de chaque colonne et quand la somme de la colonne est égale à 2 mettre 1 my @hit = split("\t",$pair->[0]); } } close($fh);
Partager