J'ai un onglet données limitées qui litTrouver les valeurs uniques dans une colonne et remplacer les valeurs uniques avec des numéros
1 0 0 1 1 Black Swan
0 0 1 0 0 Golden Duck
1 0 0 1 0 Brown Eagle
0 0 1 0 1 Golden Duck
1 0 0 1 0 Black Swan
1 0 1 0 0 Golden Duck
1 0 0 1 1 Sparrow
La dernière colonne est une combinaison d'un ou plusieurs mots séparés par un espace. Je veux compter le nombre de valeurs uniques dans la dernière colonne et le remplacer par un nombre qui est unique à ce groupe. Je sais que je peux compter le et lister les numéros en utilisant
awk -F '\t' '{print $NF}' infile | sort | uniq | wc -l
Mais comment puis-je remplacer par des nombres? Par exemple, remplacer tous les Black Swan par 1, remplacer tous Golden Duck par 2 etc. Je veux que le résultat soit:
1 0 0 1 1 1
0 0 1 0 0 2
1 0 0 1 0 3
0 0 1 0 1 2
1 0 0 1 0 1
1 0 1 0 0 2
1 0 0 1 1 4
et je veux aussi générer la liste des numéros donnés à des valeurs spécifiques comme
Black Swan 1
Golden Duck 2
Brown Eagle 3
Sparrow 4
+1 bien fait! –
D'accord. Pas besoin d'initialiser 'i' évidemment, et le printf à la fin pourrait être juste un print mais nbd. –