Fonctions de table - Plusieurs tablesJ'ai deux problèmes, je suppose que JMP attribue des tables et les utilise plus tard. Les étapes 2 et 3 se dérouleront dans des scripts distincts appelés à l'aide du Inclure() fonction.
// Étape 1 : Extraire les données du serveur et les affecter à dt_testdata_ss
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );</QUERY></SERVER>
// Étape 2 : crée une nouvelle table avec des conditions
dt_testdata_ss_tx = dt_testdata_ss
<< select where ( (:col_1 == 24) & (:col_2 == 1))
<< subset( output table name("dt_testdata_ss_tx"));
// Étape 2a : utilise dt_testdata_ss_tx dans graphplot.jsl
// Étape 2b : utilise dt_testdata_ss_tx dans distribution.jsl
// Étape 3 : crée une nouvelle table avec des conditions
dt_testdata_ss_rx = dt_testdata_ss
<< select where ((:col_1 == 16) & (:col_2== 3 ))
<< subset( output table name( "dt_testdata_ss_rx"));
// Étape 3a : utilise dt_testdata_ss_rx dans graphplot.jsl
// Étape 3b : utilise dt_testdata_ss_rx dans distribution.jsl
J'ai maintenant 3 tables ouvertes en même temps et je ne peux pas appeler la bonne table au script que vous avez fourni. Je suis même allé jusqu'à
dt_testdata_ss
dt_testdata_ss_tx
dt_testdata_ss_rx
Lorsque j'exécute votre script, j'obtiens l'erreur suivante lorsque je l'exécute avec le changement dt à dt_testdata_tx ou dt_testdata_rx :
ERREUR : argument invalide lors de l'accès ou de l'évaluation de 'Close', Close *###*/(dtSum, nosave)
Je peux seulement supposer que dt n'est pas affecté à dt_testdata_tx ou dt_testdata_rx car la table ne s'exécute pas. Je n'arrive pas à comprendre comment appeler une certaine table pour la manipuler si les 3 sont ouvertes. Suggestions?
Merci d'avance
dt = current data table(); // removed this line
dtsum = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
dtFinal = dt // changed dt to either dt_testdata_ss_tx or dt_testdata_ss_rx
Automatisation et scriptsAccès aux donnéesRe : Fonctions de table – Plusieurs tablesLes noms par défaut ici (1) rendent toutes les variables locales.Si vous souhaitez que toutes les variables soient globales, laissez cette ligne de côté.
Sinon, vous pouvez les transmettre en utilisant des variables globales.Une variable globale en JSL commence par deux deux-points "::".J'ajoute g_ pour indiquer qu'il s'agit d'une variable globale.
::g_dt_testdata_ss_tx = foo bar ...
Re : Fonctions de table – Plusieurs tablesCela fonctionne très bien merci.. En fait, j'ai trouvé un léger problème avec mon script qui ne me permettait pas de changer de table.
Maintenant, mon problème est que j'ai 4 tables ouvertes et qu'elles seront utilisées individuellement dans un script Include(). Je n'arrive pas à comprendre comment sélectionner la table de données dans le nouveau script. Il semble que les variables ne soient pas transmises au nouveau script.
Si j'ai 4 noms de table, est-ce que Names To Default Here(1); le stocker uniquement sur les variables de la table de données dans le script qui les a créées ? J'ai essayé Names To Default Here(0); ce que je pensais lui avoir attribué globalement...
Aucune suggestion?
Merci
Re : Fonctions de table – Plusieurs tablesJe pense que cela devait être la façon dont les tables/variables étaient attribuées. Ce sont les choses simples qui posent le plus de problèmes.
Un problème de calcul, ce qui ne va pas à cause d'une simple erreur mathématique. Merci beaucoup pour l'explication..
Re : Fonctions de table – Plusieurs tablesVous êtes assez proche.Pour la commande subset, il n'est pas nécessaire de nommer la table.Il suffit de l'attribuer à une variable.Mais vous devez spécifier comment vous souhaitez que le sous-ensemble fonctionne avec lignes sélectionnées (1), colonnes sélectionnées (0) .
Pas certain de pourquoi fermer (dtsum, nosave) ne fonctionne pas, à condition que vous ayez attribué dtsum = (une des variables du tableau).
Concernant dt = table de données actuelle() - Je n'utiliserais pas cela car vous avez trois tables ouvertes et quelle table est actuelle n'est peut-être pas claire.Mieux vaut simplement utiliser vos variables de table existantes.
// Step 1: Pull in data from server and assign it to dt_testdata_ss
dt_testdata_ss = Open Database( <SERVER string="">, <QUERY string=""> , "dt_testdata_ss" );
// Step 2: creates new table with conditions
dt_testdata_ss_tx = dt_testdata_ss << select where ( (:col_1 == 24) & (:col_2 == 1 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 2a: uses dt_testdata_ss_tx in graphplot.jsl
// Step 2b: uses dt_testdata_ss_tx in distribution.jsl
// Step 3: creates new table with conditions
dt_testdata_ss << clear row states; // Remove prior selec
dt_testdata_ss_rx = dt_testdata_ss << select where ( (:col_1 == 16) & (:col_2 == 3 ))
<< subset( selected rows( 1 ), selected columns( 0 ));
// Step 3a: uses dt_testdata_ss_rx in graphplot.jsl
// Step 3b: uses dt_testdata_ss_rx in distribution.jsl</QUERY></SERVER>
Re : Fonctions de table – Plusieurs tablesSi j'interprète correctement votre problème, je pense que vous ne comprenez pas vraiment comment fonctionnent les variables qui pointent vers les tableaux de données et comment les utiliser.J'ai mis en place un script très simple, qui crée 3 tables de données différentes.Il continue ensuite et produit une analyse sur chacun des différents tableaux de données, dans un ordre différent de celui dans lequel ils ont été créés.J'ai utilisé les variables de pointeur de table de données pour y parvenir.J'ai ensuite également inclus une section de commentaires illustrant comment accomplir ce même ordre de sortie si vous choisissez de réinitialiser le tableau de données actuel, avant d'exécuter l'analyse.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << select where( :sex == "F" );
dtFemale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dt << invert row selection;
dtMale = dt << subset( selected rows( 1 ), selected columns( 0 ) );
dtFemale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dtMale << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
dt << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
// Or
/*current data table( dtFemale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dtMale );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);
current data table( dt );
Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 )
);*/