Définir la valeur de la cellule si la ligne est sélectionnéeSalut,
Je suis un débutant qui essaie 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 dans un graphique que je soupçonne d'être des valeurs aberrantes.J'ai un autre script qui m'aide à examiner 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 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 très bien.Maintenant, après avoir terminé toute cette analyse, je souhaite 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, il se peut qu'un opérateur produise 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 table 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 " mauvais" et toutes les autres lignes sur "bon".Ce que j'ai en tête, c'est quelque chose comme ceci :
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 le tableau (donc à des fins de test pour le moment, je viens de définir l'index i dans la boucle for pour qu'il s'étende de 1 à 5).Aucune suggestion?Merci d'avance!
Mélange et nettoyage des donnéesRe : Définir la valeur de la cellule si la ligne est sélectionnéeSi vous ne souhaitez pas coder et le garder interactif, vous pouvez utiliser Rows -> Row Selection -> Name Selection in Column . Cela créera une colonne dans laquelle vous aurez 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 suggestion alternative qui comprend @Thierry_S suggestion:
- si les données récapitulatives/calculées sont jugées de mauvaise qualité, cliquez avec le bouton droit et excluez
- une fois terminé, validez et exécutez les analyses standards
- créez une nouvelle colonne, j'appellerai État exclu.Faire le type de données État de la ligne, il a une icône en forme d'étoile rouge.Vous pouvez maintenant cliquer sur le nom de cette colonne et sélectionner Copier à partir des états de ligne Voir la capture d'écran ci-dessous.

- Créez ensuite une colonne appelée Indicateur ou Exclu, faites-en un Numérique, Nominal. Faire une formule Exclu() et sélectionnez le bouton Appliquer, puis effacez la formule, appuyez sur D'ACCORD . Vous aurez désormais un 1 dans les lignes exclues et un 0 ailleurs.
- Vous pouvez désormais effacer les états des lignes 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 vers les états de ligne , si vous devez effectuer des analyses plus approfondies sur des données de bonne qualité.
Les colonnes d'état de ligne sont particulièrement utiles lorsqu'il y a des données suspectes ou des demandes d'analyses « et si bla, bla, était supprimé ».Vous pouvez conserver un état de ligne pour les exclusions standards 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 des lignes.Existe-t-il un moyen de configurer une fenêtre graphique de telle sorte qu'elle inclue les lignes exclues, puis de filtrer en utilisant l'état des lignes ?Ou maintenant que je dis cela, ma vraie question est peut-être de savoir quel est le moyen le plus simple d'obtenir un graphique/une analyse de seulement les lignes exclues sans créer de tables de données de sous-ensembles distincts ?
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,
Premièrement, on ne sait pas pourquoi vous définiriez "rows = dt << obtenir les lignes sélectionnées" et ne l'utiliseriez pas dans le script suivant.
Deuxièmement, avez-vous envisagé la formule beaucoup plus simple : "Selected ()" qui renvoie 1 si sélectionné et 0 sinon (c'est-à-dire définissez la formule FlagColumn comme : "Selected ()"). Il convient de noter que, comme toutes les formules, elle est évaluée automatiquement par défaut. Vous devrez donc peut-être basculer sur l'état Supprimer l'évaluation dans la boîte de dialogue de formule pour conserver un certain état de sélection. De plus, si vous ne devez capturer l'état de sélection qu'une seule fois, vous pouvez ajouter la formule, appliquer la modification et supprimer la formule, ce 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