Recherche d'une liste pour une valeurSalut,
J'ai une liste que j'ai faite à partir d'une chaîne délimitée. Cette chaîne ressemble à ceci : (numéro)|(nom)|(numéro)|(nom)|(numéro)... etc. Ce que j'ai fait est de prendre cette chaîne et de l'analyser par le délimiteur ('|'). J'ai ensuite pris cette liste de toutes les valeurs et créé une nouvelle liste de "noms" uniquement et créé de nouvelles colonnes avec. Le problème que j'ai rencontré est lorsque j'analyse la chaîne et la place dans chaque colonne. Parce que toutes les chaînes de chaque ligne ne commencent pas par la même valeur. J'ai dû obtenir tous les "noms" à partir de deux lignes de données. Ainsi, la première rangée, la troisième rangée, la cinquième rangée, etc. devraient être les mêmes, mais le "nom" sur lequel se terminent leurs chaînes est différent. Par la suite, chaque deuxième, quatrième, sixième, etc. rangées commencent par un "nom" différent (là où les rangées impaires se sont arrêtées). La liste des noms que j'obtiens pour faire les colonnes est tous les noms qui existent, mais je veux pouvoir placer tous les nombres dans leurs propres colonnes.
Une partie du script que j'ai utilisé pour analyser toutes les données est :
// Récupère tous les noms de broches
Liste = {} ;
liste = {} ;
liste2 = {} ;
// Itérer sur les premières lignes de : Test_Result pour obtenir les noms des broches
liste = mots(column(dt4,"Test_Result")[1], "|");
list2 = mots(column(dt4,"Test_Result")[2], "|");
// La première valeur de la chaîne est une information inutile, donc supprimez-la
liste2 = Supprimer(list2,1);
one_test_result_list = concat(list,list2);
// Récupère tous les noms de broches commençant par la deuxième valeur
For(i = 1, i <= nitems(one_test_result_list)/2, i++,
Affecter(Liste , one_test_result_list[i*2]);
);
Je n'ai aucune idée comment faire ça. Parce que le "nombre" suivant chaque "nom" dans la chaîne est la valeur qui correspond à ce nom. Donc, si je vois ce nom, je dois placer la valeur suivante dans la colonne de ce nom.
Merci beaucoup pour toute aide!
Re : Rechercher une valeur dans une liste<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonne gestion des noms de colonnes qui ne sont pas connus à l'avance.
Re : Rechercher une valeur dans une listedt = Nouveau tableau ( "Exemple" , Ajouter des lignes ( 4 ) ,
Nouvelle colonne ( "Données brutes" , Personnage , Nominal ,
Définir les valeurs (
{ "1|visage|3|Spock|4|Hippocampe|5" , "1|visage|2|Shatner|3|Spock|5" ,
"1|visage|2|Shatner|3|Spock|4|Hippocampe|5" ,
"1|Shatner|3|Spock|4|Hippocampe|5" }
)
)
) ;
col_names = dt << obtenir les noms de colonnes ( chaîne ) ;
pour ( je = 1 , je <= nrows ( dt ) , je ++,
liste de mots = mots ( dt : données brutes [ je ] , "|" ) ;
pour ( k = 2 , k <= articles ( liste de mots ) , k = k + 2 ,
one_col = liste de mots [ k ] ;
un_num = liste de mots [ k + 1 ] ;
si ( ! contient ( col_names , one_col ) ,
dt << nouvelle colonne ( one_col , personnage , nominal ) ;
insérer dans ( col_names , one_col ) ;
) ;
colonne ( dt , one_col )[ je ] = un_num ;
) ;
) ;
Re : Rechercher une valeur dans une listeMerci Craig! C'est exactement ce que je recherche ! Cela fonctionne parfaitement !
Re : Rechercher une valeur dans une listePas sûr de répondre à la bonne question non plus.Peut-être que cela aidera:
dt = New Table( "Untitled",New Column( "dogs"),New Column( "cats"),New Column( "mice"),New Column( "horses"));
load = function({txt},
dt << addrow(1);
list=words(txt,"|");
for(i=1,i
columnName = list; i=i+1;
columnValue = list; i=i+1;
column(dt,columnName)[] = num(columnValue);
)
);
load("mice|3|horses|7");
load("cats|3|mice|9");

La ligne 1 crée un modèle de table de données et suppose que vous connaissez tous les noms de colonnes possibles.La ligne 2 commence une fonction utilisateur qui prend un seul argument, txt.Les lignes 3 à 10 sont la fonction : ajoutez une ligne au tableau, faites une liste à partir du texte, parcourez la liste deux éléments à la fois, obtenez un nom, obtenez une valeur.La ligne 8 crée une colonne à partir d'un nom de caractère et utilise le [ ] vide pour insérer une valeur dans la ligne actuelle.Les lignes 11 et 12 sont des exemples d'appels à la fonction.
Re : Rechercher une valeur dans une listeC'est proche ! J'ai déjà le code qui analyse les données et je crée une nouvelle liste avec juste les noms. Ce que je recherche vraiment, c'est qu'après avoir créé ces nouvelles colonnes, je dois les remplir avec tous les chiffres. Étant donné que le nombre suivant chaque nom est la valeur de ce nom, je souhaite simplement rechercher le nom dans la liste et placer la valeur suivante dans cette colonne. Un peu comme ça :
(Supposons que ce sont des colonnes) : face | Chatner | Spock | hippocampe
2 | 3 | 4 | 5
Étant donné que le premier numéro pour moi est inutile, je l'ignore simplement, mais les chiffres qui suivent le nom sont les valeurs qui m'intéressent. Mais supposons qu'il manque l'une de ces valeurs :
chaîne = "1|Shatner|3|Spock|4|Hippocampe|5" ;
J'ai toujours toutes les colonnes d'origine, mais une ligne de ma table de données peut manquer une valeur au milieu ou au début, je veux qu'elle recherche dans la liste et ignore les valeurs manquantes :
(Supposons que ce sont des colonnes) : face | Chatner | Spock | hippocampe
| 3 | 4 | 5
Je ne sais pas si cela est possible, mais toutes les lignes ne commencent pas par la même valeur. Mais il devrait avoir toutes les valeurs après avoir trouvé la première. Donc, tout ce dont j'ai vraiment besoin est de trouver à quelle colonne appartient la première valeur, puis de remplir toutes les colonnes après cela.
Merci!
Re : Rechercher une valeur dans une listeJe ne suis pas sûr de vous comprendre, mais on dirait que vous voulez juste faire ça ?
chaîne = "1|'visage'|2|Shatner|3|Spock|4|Hippocampe" ;
liste = mots ( chaîne , "|" ) ;
n = articles ( liste ) / 2 ;
indice = 1 :: n ;
les soirs = indice * 2 ;
noms = liste [ les soirs ] ;
Ou éventuellement des tableaux associatifs ?