Comment obtenir des valeurs de lignes non vides correspondant aux étiquettes choisies dans les colonnes ?J'ai les données entrantes du formulaire ci-joint.
Je souhaite obtenir les trois premières valeurs de ligne de chaque colonne (entourées en rouge) qui apparaissent contre des étiquettes spécifiques.
Ce qui suit fonctionne pour le courant mais pas pour la tension (pour la tension, j'obtiens des valeurs vides et je comprends pourquoi)
Stage = "7"; resCol = "Current";
theLSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "LSL" ))[1]]; show (theLSL);
theUSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "USL" ))[1]]; show (theUSL);

Automatisation et scriptsles fenêtresRe : Comment obtenir les valeurs de lignes non vides correspondant aux étiquettes choisies dans les colonnes ?Vous pouvez ajouter une vérification supplémentaire en utilisant IsMissing()
... & !IsMissing(Column(dt, resCol)[])
Re : Comment obtenir les valeurs de lignes non vides correspondant aux étiquettes choisies dans les colonnes ?@jthi Merci.
Re : Comment obtenir les valeurs de lignes non vides correspondant aux étiquettes choisies dans les colonnes ?C'est une condition de recherche supplémentaire pour vos << obtenir des lignes où
dt << get rows where(:TestStage == Stage & :label == "USL" & !Is Missing(Column(dt, resCol)[]))
Re : Comment obtenir les valeurs de lignes non vides correspondant aux étiquettes choisies dans les colonnes ?Le JSL tel qu'écrit renvoie uniquement la valeur de la première ligne correspondante.Alors que
dt << get rows where( :TestStage == Stage & :label == "LSL" )
renvoie une matrice de toutes les lignes correspondantes trouvées, lorsque l'indice de [1] est ajouté
(dt << get rows where( :TestStage == Stage & :label == "LSL" ))[1]
il renvoie le numéro de ligne de la première ligne trouvée uniquement, ce qui, dans votre exemple, renvoie une valeur manquante.
@jthi Jarmo suggère d'ajouter une clarification supplémentaire pour éliminer les valeurs manquantes, ce qui modifierait votre Get Rows Where() en
(dt << get rows where( :TestStage == Stage & :label == "LSL" & !IsMissing(Column(dt, resCol) ) )[1]
C'est une bonne solution si vous recherchez simplement la première valeur non manquante.Cependant, si vos données peuvent contenir plusieurs lignes de valeurs LSL non manquantes, vous ne souhaiterez peut-être pas que la première valeur non manquante soit trouvée.Vous souhaiterez peut-être faire quelque chose comme rechercher la valeur Max USL ou la valeur Mean USL à partir de toutes les lignes non manquantes renvoyées.Tu pourrais faire quelque chose comme
theUSL = dt << get rows where( :TestStage == Stage & :label == "LSL" & !Is Missing( Column( dt, resCol ) ) );
USLMat = [];
For Each( {foundRow, index}, theUSL, USLMat = USLMat || Column( dt, resCol )[index] );
theUSL = Mean( USLMat );
Re : Comment obtenir les valeurs de lignes non vides correspondant aux étiquettes choisies dans les colonnes ?J'essaie de faire la même chose et dans mon cas
dt << Get Rows Where(:A == "AAA")
donne une liste avec un élément.
Je dois donc utiliser
:B[(dt << Get Rows Where(:A == "AAA"))[1]]
Re : Comment obtenir les valeurs de lignes non vides correspondant aux étiquettes choisies dans les colonnes ?@miguello , y a-t-il une question ?
Re : Comment obtenir les valeurs de lignes non vides correspondant aux étiquettes choisies dans les colonnes ?Je suppose que non. J'aimerais simplement comprendre quel comportement est correct et pourquoi moi et @Neo le faisons dans un sens, et vous dans un autre ?
Qu'est-ce que cela dépend du fait qu'il donne une matrice ou une liste d'éléments uniques avec matrice ?
Re : Comment obtenir des valeurs de ligne non vides correspondant aux étiquettes choisies à partir des colonnes ?Si vous ne renvoyez qu'une seule ligne à partir de l'appel Get Rows Where(), il n'y a pas de différence significative.