J'ai besoin d'extraire par genre unique (première partie du nom de l'espèce) dans une colonne, mais avec par le plus grand nombre dans une autre colonne dans un fichier CSV lors de la multiplication du même nom.
Donc, si vous avez plusieurs genêts (même prénom), prenez le plus gros numéro de la dernière colonne pour sélectionner ce qui représentera ce genre. P>
J'ai extrait les informations dans les tableaux, mais j'ai des problèmes avec la combinaison des deux afin de sélectionner. J'utilisais
https://perlmaven.com/unique-values-in-an- Array-in-Perl
Pour vous aider, mais je dois inclure le plus grand nombre dans la dernière colonne lorsque vous avez la même situation de genre. p> exemple d'entrée: h1>
Sortie souhaitée: h1>
4 Réponses :
use Text::CSV_XS qw( ); my $csv = Text::CSV_XS->new({ auto_diag => 2, binary => 1, quote_space => 0, }); my %by_genus; while ( my $row = $csv->getline(\*ARGV) ) { my ($genus) = split(' ', $row->[3]); $by_genus{$genus} = $row if !$by_genus{$genus} || $row->[5] > $by_genus{$genus}[5]; } $csv->say(select(), $_) for values(%by_genus);
Nommer correctement les variables rend le code plus lisible: L'ordre des lignes de sortie est aléatoire. p> p>
Cela suppose que le dernier champ sera toujours non négatif. (Probablement d'accord, mais vous auriez dû l'avoir mentionné!)
Cela ne gère qu'un sous-ensemble de CSV.
Oui, le danger de deviner la spécification d'une entrée d'échantillon.
pas fantaisie mais obtient le travail effectué sortie: p> ne vois pas une méthode évidente que vous triez votre sortie par p> p>
Pratiquement identique à la réponse de @ Choroba, jusqu'à inutilement ne manipulant pas un sous-ensemble de CSV.
Vous pouvez également cette ligne de commande Perl aussi avec les entrées données dans le fichier cara.txt, la sortie est p>
Pourquoi protopéridinium denticulatum i> sélectionné et non protoperidinium diverggens i>? Ils ont tous les deux 1800 dans la dernière colonne.
Je n'ai besoin que d'un pour représenter ce genre. Donc, si j'ai le même numéro, je viens de choisir au hasard entre les deux ou plus.
Les espèces du même genre sont-elles toujours adjacentes?
Non, pas toujours.