Définir la valeur de la cellule si la ligne est sélectionnéeSalut,
Je suis un débutant essayant d'écrire un script pour remplir une valeur de cellule si sa ligne est sélectionnée.Le cas d'utilisation que j'ai en tête est le suivant : lors de l'analyse exploratoire des données, je sélectionne certains points d'un graphique que je soupçonne d'être des valeurs aberrantes.J'ai un autre script qui m'aide à regarder les données brutes (ne faisant pas partie de la table JMP), et sur la base de ces données brutes, je décide que la ligne correspondant à ce point de données doit être exclue de mon analyse (c'est-à-dire les données brutes utilisées pour générer cette ligne particulière est une poubelle).Je peux simplement faire un clic droit et sélectionner "Exclure".Désormais, toutes mes analyses JMP ne portent que sur les bons points de données, ce qui est parfait.Maintenant, après avoir terminé toute cette analyse, je veux revenir en arrière et faire une analyse sur les lignes que j'ai exclues.Par exemple, si chaque ligne représente des données collectées par différents opérateurs, peut-être qu'un opérateur produit beaucoup de données indésirables.Je peux bien sûr faire une solution pointer-cliquer pour sélectionner toutes les lignes exclues et créer un nouveau sous-ensemble de données, mais ce que je préférerais faire est d'ajouter une nouvelle colonne (appelons-la FlagColumn) et de définir toutes les lignes sélectionnées dans FlagColumn sur " bad" et toutes les autres lignes sur "good".Ce que j'ai en tête, c'est quelque chose comme ça :
dt = current data table();
rows = dt << get selected rows ;
For( i=1,
i<=5,
i++,
if(Row State(i) == Selected State(1),
dt:FlagColumn[i] = 0
);
);Mais cela ne semble rien faire - je pense que je ne comprends pas comment configurer correctement la condition dans l'instruction if.De plus, je n'ai pas encore compris comment obtenir le nombre de lignes dans la table (donc à des fins de test pour le moment, je viens de définir l'index i dans la boucle for pour qu'il s'exécute de 1 à 5).Aucune suggestion?Merci d'avance!
Tableau de donnéesScriptRe : Définir la valeur de la cellule si la ligne est sélectionnéeSi vous ne voulez pas coder et le garder interactif, vous pouvez utiliser Rows -> Row Selection -> Name Selection in Column . Cela créera une colonne où vous avez une valeur pour les lignes sélectionnées et une valeur (ou manquante) pour les autres. Un peu similaire à ce qui a été réalisé avec l'option d'état de ligne scriptée mentionnée ci-dessus
Re : Définir la valeur de la cellule si la ligne est sélectionnée@jdwatson ,
Hmmm, pour moi, la validation des données peut être une tâche qui peut prendre plus d'une session d'édition.Aussi, je suis peut-être maladroit, mais pour moi, il est si facile de désélectionner accidentellement.Voici une autre suggestion qui comprend @Thierry_S suggestion:
- si les données résumées/calculées sont jugées de mauvaise qualité, cliquez avec le bouton droit de la souris et excluez
- une fois terminé, valider et exécuter les analyses standard
- créer une nouvelle colonne, j'appellerai État exclu.Faire le type de données État de la ligne, il a une icône d'étoile rouge.Vous pouvez maintenant cliquer sur ce nom de colonne et sélectionner Copier à partir des états de ligne Voir la capture d'écran ci-dessous.

- Ensuite, créez une colonne appelée Indicateur ou Exclusion, rendez-la Numérique, Nominale. Faire une formule Exclu() et sélectionnez le bouton appliquer, puis effacez la formule, appuyez sur D'ACCORD . Vous aurez maintenant un 1 dans les lignes exclues et 0 ailleurs.
- Vous pouvez maintenant effacer les états de ligne et utiliser cette colonne Indicateur comme prévu.Mais vous avez l'avantage supplémentaire de cliquer rapidement sur la colonne État exclu et de sélectionner Copier dans les états de ligne , si vous avez besoin de faire d'autres analyses sur les données de bonne qualité.
Les colonnes d'état de ligne sont particulièrement intéressantes lorsqu'il existe des données suspectes ou des demandes d'analyses "et si bla, bla, a été supprimé".Vous pouvez conserver un état de ligne pour les exclusions standard et les exclusions standard + supplémentaires.Il s'agit d'une forme de gestion de l'état des lignes, qui n'est ni interactive ni dynamique, mais qui peut être très utile.
Re : Définir la valeur de la cellule si la ligne est sélectionnéeAh, oui, on dirait que cela accomplit également la même chose que je voulais faire, sans aucun script.Il semble cependant que le filtre de données local n'affiche pas les colonnes d'état de ligne.Existe-t-il un moyen de configurer une fenêtre de graphique de manière à inclure des lignes exclues, puis à filtrer à l'aide de l'état de la ligne ?Ou maintenant que je dis cela, peut-être que ma vraie question est de savoir quel est le moyen le plus simple d'obtenir un graphique/une analyse de seul les lignes exclues sans créer de tables de données de sous-ensemble distinctes ?
Re : Définir la valeur de la cellule si la ligne est sélectionnéeJe pense avoir répondu à ma propre question.Ajoutez-le ci-dessous au cas où d'autres rencontreraient ce problème :
dt = current data table();
rs = dt << Get Row States;
For( i=1,
i<=Length(rs),
i++,
if(rs[i] == 1,
FlagColumn[i] = 1
);
);Re : Définir la valeur de la cellule si la ligne est sélectionnéeEncore une chose,
Avez-vous envisagé de changer le type de données FlagColumn en "État de ligne" et de l'utiliser pour capturer l'état de sélection actuel (clic droit sur l'en-tête de colonne > Cellules d'états de ligne > Sélectionner/Désélectionner ?
Meilleur,
TSRe : Définir la valeur de la cellule si la ligne est sélectionnéeSalut,
Tout d'abord, la raison pour laquelle vous définiriez "rows = dt << get selected rows" et ne l'utiliseriez pas dans le script suivant n'est pas claire.
Deuxièmement, avez-vous considéré la formule beaucoup plus simple : "Selected ()" qui renvoie 1 si elle est sélectionnée et 0 sinon (c'est-à-dire définir la formule FlagColumn comme : "Selected ()"). Il convient de noter que, comme toutes les formules, elle est évaluée automatiquement par défaut. Par conséquent, vous devrez peut-être basculer vers l'état Supprimer l'évaluation dans la boîte de dialogue de la formule pour conserver un certain état de sélection. De plus, si vous n'avez besoin de capturer qu'une seule fois l'état de sélection, vous pouvez ajouter la formule, appliquer la modification et supprimer la formule qui conservera un enregistrement stable de ce qui a été sélectionné lors de l'exécution de la formule.Re : Définir la valeur de la cellule si la ligne est sélectionnéeRegardez make rowstste Handler