Script de sous-ensemble<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour les utilisateurs de JMP,
Je suis capable de générer des scripts pour créer des sous-ensembles de fichiers de données volumineux, mais je dois ensuite les nommer manuellement et les exécuter tous individuellement via un deuxième et un troisième script de sous-ensemble. Existe-t-il un moyen d'exécuter de manière itérative la commande de sous-ensemble et d'enregistrer les fichiers pour inclure les définitions de sous-ensemble ?
Par exemple : sous-ensemble du fichier "Couleurs" par colonne1 (rouge, bleu, vert) pour produire et enregistrer des fichiers : Colors.red.jmp, Colors.blue.jmp, Colors.green.jmp puis sous-ensemble de ceux-ci par colonne8 (clair, clair , sombre) pour créer et enregistrer des fichiers
Colors.red.bright.jmp, Colors.red.light.jmp, Colors.red.dark.jmp, Colors.blue.bright.jmp, Colors.blue.light.jmp, Colors.blue.dark.jmp, Colors. green.bright.jmp, Colors.green.light.jmp, Colors.green.dark.jmp.
Les positions des colonnes varieraient.
Merci !!!
Re : Script de sous-ensembleCela n'a toujours pas fonctionné. J'ai ajouté plus de temps (30), (90), etc., aussi. J'ai pu obtenir que les fichiers soient protégés par sauvegarde, ce qui signifie que je ne pouvais pas les fermer sans indiquer s'ils devaient ou non être sauvegardés, mais la dénomination était toujours un sous-ensemble du sous-ensemble de myfile 2 3.jmp, etc. Je pense que la liste des variables de sous-ensemble est en quelque sorte désactivée. Je vais dépanner plus au cours du week-end et je peux demander de l'aide ici à quelqu'un qui a l'habitude de travailler avec notre version de JMP.
Merci beaucoup pour votre aide et vos conseils et bon week-end, MS !
Re : Script de sous-ensemblePeut-être un problème de performances. Essayez d'insérer une commande Wait(0) dans les deux boucles For pour vous assurer que les tables sont complètes avant que JMP ne tente de les enregistrer.
Re : Script de sous-ensembleCela est étrange. Le chemin est correct car je l'ai utilisé pour ouvrir un dt dans le même répertoire. Il crée tous les fichiers, mais ils ont des noms comme "Sous-ensemble de sous-ensemble de MyFile 2 3.jmp", "Sous-ensemble de sous-ensemble de MyFile 2 2.jmp", etc. Ces fichiers sont exactement ce que je veux et c'est incroyable que ce script les crée, malheureusement il ne les nomme pas correctement et ne les enregistre pas. Au pire des cas, je les nomme manuellement, ce qui me fait quand même gagner beaucoup de temps !
Merci pour vos efforts.
Éric
Re : Script de sous-ensembleJe viens d'essayer le script dans JMP 9.0.3 et cela a parfaitement fonctionné, comme dans JMP 10.
Vérifiez votre variable de chemin. Il doit s'agir d'une chaîne et commencer et se terminer par /.
Par exemple sur mon Mac cela fonctionne : myPath = "/Users/MS/Desktop/"
Re : Script de sous-ensembleBonjour MS,
C'était très proche !Il a créé tous les sous-ensembles, mais n'a enregistré aucune des tables. J'ai ce message : Impossible d'enregistrer le fichier. Cible de données inconnue.
J'utilise JMP 9 donc je me demande s'il y a une différence dans une commande pour créer le fichier ou est-ce que je fais quelque chose de mal ? J'ai mis le bon chemin dans le script.
Merci,
Éric
Re : Script de sous-ensembleAu moins dans JMP 10, il y a une case à cocher "Sous-ensemble par". Si cette option est sélectionnée, des sous-ensembles pour chaque niveau de colonne(s) sélectionnée(s) sont automatiquement générés. Il est facile d'implémenter cette fonction dans JSL si le nombre de sous-colonnes est connu. Cependant, généraliser cela a été plus délicat que je ne l'imaginais.
Cette approche, basée sur l'insertion des sous-ensembles générés séquentiellement dans des listes (au sein de listes) semble cependant fonctionner :
// Exemple de tableau
dt = Nouveau tableau ( "Couleur" ,
Ajouter des lignes ( 12 ) ,
Nouvelle colonne ( "Couleur" ,
Personnage ,
Nominal ,
Définir les valeurs ( { "rouge" , "rouge" , "rouge" , "rouge" , "bleu" , "bleu" , "bleu" , "bleu" , "bleu" , "vert" , "vert" , "vert" } )
) ,
Nouvelle colonne ( "Intensité" ,
Personnage ,
Nominal ,
Définir les valeurs (
{ "brillant" , "brillant" , "sombre" , "lumière" , "lumière" , "lumière" , "lumière" , "sombre" , "sombre" , "sombre" , "lumière" , "brillant" }
)
) ,
Nouvelle colonne ( "Finir" ,
Personnage ,
Nominal ,
Définir les valeurs (
{ "Mat" , "Blanc" , "Mat" , "Blanc" , "Mat" , "Blanc" , "Mat" , "Blanc" , "Mat" , "Blanc" , "Mat" , "Blanc" }
)
) ,
Nouvelle colonne ( "Colensité" , Personnage , Nominal )
) ;
Pour chaque ligne ( : Colensité = Couleur || Intensité || Finir ) ; // Juste pour vérifier que ça marche...
// Fin du tableau d'exemple
// Le script commence ici
cols = { Couleur , Intensité , Finir } ; // N'importe quel nombre de sous-ensembles par colonnes (dans l'ordre hiérarchique)
NT = Tableau N () ; //nombre de tables actuellement ouvertes
sous-liste = Liste d'évaluation ( { dt << sous-ensemble ( par ( cols [ 1 ] ) )} ) ; //Sous-ensembles de premier niveau
// Créer des sous-ensembles de niveau inférieur de manière récursive
Pour ( je = 2 , je <= N articles ( cols ) , je ++,
Insérer dans ( sous-liste , Liste d'évaluation ( { Éval ( sous-liste [ je - 1 ] ) << sous-ensemble ( par ( cols [ je ] ) )} ) )
) ;
// nommez et enregistrez tous les sous-ensembles
mon chemin = "chemin" ; // passe au chemin souhaité
Pour ( je = 1 , je <= Tableau N () - NT , je ++,
la télé = Tableau de données ( je ) << obtenir les noms des variables de table ; // Les niveaux sont stockés sous forme de variables de table
sous-nom = {} ;
Pour ( j = 1 , j <= N articles ( la télé ) , j ++,
Insérer dans ( sous-nom , Tableau de données ( je ) << obtenir une variable de table ( la télé [ j ] ) )
) ;
Insérer dans ( sous-nom , dt << obtenir le nom ) ;
Inverser dans ( sous-nom ) ;
Tableau de données ( je ) << sauvegarder ( mon chemin || Concater des objets ( sous-nom , "." ) ) ;
) ;
// Fin du script //ferme tout(tables de données);
Re : Script de sous-ensembleMerci PMroz,
Le problème est que j'ai besoin de conserver les fichiers intermédiaires et l'exemple que j'ai donné a été inventé, les noms de colonne changeaient à chaque fois.
Merci,
Éric
Re : Script de sous-ensembleJ'ai une application dans laquelle je dois créer un sous-ensemble d'un grand ensemble de données de plusieurs manières différentes et exécuter la même analyse sur chaque sous-ensemble.Plutôt que de créer des ensembles de données séparés, j'utilise une combinaison de SELECT et EXCLUDE pour préparer les données du grand ensemble de données pour l'analyse.Par exemple:
dt = Nouveau tableau ( "Exemple de couleur" ,
Ajouter des lignes ( 12 ) ,
Nouvelle colonne ( "Couleur" , Personnage , Nominal ,
Définir les valeurs (
{ "rouge" , "rouge" , "rouge" , "rouge" , "bleu" , "bleu" , "bleu" , "bleu" , "bleu" ,
"vert" , "vert" , "vert" } ) ) ,
Nouvelle colonne ( "Intensité" , Personnage , Nominal ,
Définir les valeurs (
{ "brillant" , "brillant" , "sombre" , "lumière" , "lumière" , "lumière" , "lumière" , "sombre" ,
"sombre" , "sombre" , "lumière" , "brillant" } ) ) ) ;
nr = nrows ( dt ) ;
color_list = { "rouge" , "bleu" , "vert" } ;
liste_intensité = { "brillant" , "lumière" , "sombre" } ;
pour ( je = 1 , je <= articles ( color_list ) , je ++,
une couleur = color_list [ je ] ;
pour ( k = 1 , k <= articles ( liste_intensité ) , k ++,
one_intensity = liste_intensité [ je ] ;
// Exclure toutes les lignes ne correspondant pas à cette couleur et à cette intensité
dt << sélectionner où ( : Couleur == une couleur & : Intensité == one_intensity )
<< inverser la sélection de ligne << Exclure ;
nsélectionné = nr - nrows ( dt << Obtenir les lignes sélectionnées ) ;
dt << effacer sélectionner ;
si ( nsélectionné > 0 ,
// Faites votre analyse sur dt ici.Seules les lignes non exclues seront utilisées.
// La seule commande que j'ai trouvée qui ignore les lignes exclues est Tables >> Résumé
imprimer ( "# Lignes: " || carboniser ( nsélectionné ) || " couleur: " || une couleur ||
" intensité: " || one_intensity ) ;
) ;
// Nettoyer pour la prochaine sélection
dt << effacer les états de ligne ;
) ;
) ;