Sélectionner où une colonne contient une valeurJ'ai un script censé :
1) Autoriser l'utilisateur à choisir plusieurs fichiers à ouvrir
2) Fermez tous les fichiers qui n'ont pas de données (c'est-à-dire une seule colonne avec une valeur indiquant NA)
3) Fermez tous les fichiers qui ne contiennent pas 1146 dans la colonne 7 (la colonne s'appelle Sealer # dans certains fichiers et est sans nom dans d'autres, de plus c'est une colonne de caractères dans certains fichiers et une colonne numérique dans d'autres)
J'ai réussi à faire fonctionner les deux premières choses, mais j'ai du mal avec la troisième. Voici le script que j'ai jusqu'à présent.
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( 7 ) << Data Type( Character );
check = DT << Get Rows Where( Contains( Column( 7 ), "1146" ) );
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
Au mieux, je peux dire que le problème est la ligne check = DT<< Obtenir des lignes où ( Contient ( colonne ( 7 ), "1146" )); , mais je ne vois pas comment y remédier.
Aucune suggestion?
Re : Inviter l'utilisateur à sélectionner une ou plusieurs colonnes dans une fenêtre contextuelleTéléchargez le complément dans votre dossier de téléchargements
Allez ensuite dans JMP et
Fichier==>Ouvrir
Allez dans le dossier de téléchargement
Cliquez une fois sur le fichier Runs Test.jmpaddin
Accédez ensuite à la flèche vers le bas du bouton Ouvrir et sélectionnez
Ouvrir à l'aide du générateur de compléments
Dans le générateur de compléments, sélectionnez l'onglet Éléments de menu
Cliquez ensuite sur l'entrée Runs Test
Dans la zone "Exécuter ce JSL", vous verrez le script intégré
Coupez et collez-le dans une fenêtre de script
Re : Inviter l'utilisateur à sélectionner une ou plusieurs colonnes dans une fenêtre contextuelleMerci Jim, j'ai trouvé le complément, comment puis-je regarder le code du script ?
Sam
Re : Inviter l'utilisateur à sélectionner une ou plusieurs colonnes dans une fenêtre contextuelleSalut Jim, peux-tu être plus précis s'il te plait ? est-ce un script intégré ?
Merci
Sam
Re : Inviter l'utilisateur à sélectionner une ou plusieurs colonnes dans une fenêtre contextuelleJe vous suggère de regarder dans le JMP Addin sur "Runs Test" qui contient un exemple de faire ce que vous demandez de faire avec votre exemple. Il fournit une boîte de dialogue qui permet de sélectionner des colonnes et de les placer dans des boîtes de sélection. Il a également une capacité de filtrage et une capacité de rappel.
Exécute le test (test de Wald-Wolfowitz) et l'implémentation JSL de la boîte de dialogue de la plate-forme JMP
Inviter l'utilisateur à sélectionner une ou plusieurs colonnes dans une fenêtre contextuelleSalut les gars, j'essaie de faire en sorte que le script invite l'utilisateur à sélectionner la coordonnée x de 2 colonnes et une autre coordonnée y à partir d'une table.
Le graphique ci-dessous est ce que j'aime que le script fasse. L'utilisateur choisit la coordonnée x, y puis je l'utilise pour la transmettre en tant que variable. J'en ai besoin dans le script plus tard pour faire le mappage des matrices. des idées? merci graphique ci-dessous est photo shop pour montrer le résultat final.
merci.

Re : Sélectionner où une colonne contient une valeurJ'ai essayé de déboguer cette section de script, mais je n'ai jamais pu la faire fonctionner. Je me suis retrouvé avec cette version qui fonctionnait avec quelques légères modifications.
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
Wait( 0 );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save )
,
Column( DT, 7 ) << Data Type( Character );
Names Default To Here( 1 );
name = Char( Column( DT, 7 ) << get name );
Print( name );
Eval( Parse( "check = DT << Select Where( Contains( " || ":" || name || " , " || "char(1146)))" ) );
If( N Rows( DT << Get Selected Rows ) == 0,
Close( DT, No Save )
,
DT << Invert Row Selection;
DT << Delete Rows;
DT << Clear Select;
//oldname = char(DT<< Get Name());
//rename = char(Word(-1, oldname, "-"));
//DT<<SET name=""></SET>
Re : Sélectionner où une colonne contient une valeurVoici une version légèrement modifiée de votre code, qui répertorie nos valeurs de l'instruction Get Rows Where et la valeur de check.
Names Default To Here( 1 );
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
Wait( 0 );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( DT, 7 ) << Data Type( Character );
Names Default To Here( 1 );
//Current Data Table( DT );
Eval(
Parse(
"check = DT << Get Rows Where( Contains( " || ":" || Char( Column( DT, 5 ) << get name ) || " , \!"1146\!" ) ) );"
)
);
Show(
"check = DT << Get Rows Where( Contains( " || ":" || Char( Column( DT, 7 ) << get name ) || " , \!"1146\!" ) ) );",
check
);
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
Vous pouvez exécuter le débogueur JMP à ce sujet. Mon hypothèse est qu'il y a un décalage avec la colonne 7 ou quelque chose comme ça. Je sais que le code fonctionne, puisque je l'ai testé sur un exemple de table de données qui avait une colonne avec quelques lignes qui avaient votre 1146 dans les valeurs de colonne
Re : Sélectionner où une colonne contient une valeurJ'ai essayé de mettre la section dans le script, mais cela ne semble pas fonctionner. Il ferme toujours les fichiers vides, mais ferme les fichiers contenant des données et contenant 1146. J'ai essayé de changer le If(NRows(check)==0 en !=0, mais cela n'a pas semblé faire de différence. Et cette erreur apparaît dans le journal :
Inattendu ")". Il manque peut-être un ";" ou ",".
Ligne 1 Colonne 64 : ...( :Sealer # , "1146" ) ) ►);...
Le texte restant qui a été ignoré était
Voici le script mis à jour :
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( 7 ) << Data Type( Character );
Names Default To Here( 1 );
Current Data Table( DT );
Eval(
Parse( "check = DT << Get Rows Where( Contains( " || ":" || Char( Column( 7 ) << get name ) || " , \!"1146\!" ) ) );" )
);
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
Re : Sélectionner où une colonne contient une valeurCe code fonctionnera
Names Default To Here( 1 );
dt = Current Data Table();
Eval( Parse( "check = DT << Get Rows Where( Contains( " || ":" ||
Char( Column( 3 ) << get name ) || " , \!"1146\!" ) ) );" ) );