Bonjour,
J'essaie de générer un tableau récapitulatif à partir d'une table de données principale.
Jusqu'à présent, j'ai pu mettre toutes les mesures dans la colonne 1 avec regroupement (colonne 2).
Je pourrais ensuite remplir avec Count, Mean, StdDev, +4sigma, -4sigma.
L'étape suivante consiste à ajouter l'intervalle de confiance (95 %) pour la moyenne et le STD : de la même manière que dans l'analyse suivante :
Ajuster Y par X > Moyens et développement standard.
Je pourrais exécuter TOUTES les analyses une par une avec une boucle FOR() et utiliser DisplayBox pour sélectionner chaque valeur et remplir mon tableau de données récapitulatif, mais je préférerais vraiment ne pas le faire, cela ralentirait BEAUCOUP l'analyse puisque j'ai l'habitude de le faire. traiter plus de 1 000 métriques et plus de 10 000 lignes.
Merci d'avance pour votre aide
- Prédicateur
Ci-joint mon script qui appelle BIG CLASS.JMP à titre d'exemple
Names Default To Here( 1 );
clear symbols();
Deletesymbols();
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
SplitBy = "sex";
//Get a list from all unique configs
summarize(ColumnSplitBy=by(Column (dt, SplitBy)));
show(ColumnSplitBy);
For( i = N Items( ColumnSplitBy ), i > 0, i--,
If( ColumnSplitBy[i] == "",
Remove From( ColumnSplitBy, i, 1 );
)
);
//Get only numeric Columns
MetricCols = dt << Get Column Names( numeric, continuous );
//Create a new table to collect the stats from the "Test" table
CpkTable = New Table( "Summary Table",
New Column( "Metric", "Character", "Nominal" ),
New Column( SplitBy, "Character", "Nominal" ),
New Column( "N", "Numeric", "Continuous" ),
New Column( "LSL", "Numeric", "Continuous" ),
New Column( "USL", "Numeric", "Continuous" ),
New Column( "Mean", "Numeric", "Continuous" ),
New Column( "StdDev", "Numeric", "Continuous" ),
New Column( "+4σ", "Numeric", "Continuous", formula(:Mean + :StdDev * 4) ),
New Column( "-4σ", "Numeric", "Continuous", formula(:Mean - :StdDev * 4) ),
);
show(MetricCols);
for(i=1,i <= N Items(MetricCols) ,i++,
show(i);
// Calculate Stats
Summarize(dt, exg = by(Column (dt, SplitBy)),
exc = Count((Column (dt, Eval(Eval Expr(Expr(Char(MetricCols[i]))))))),
exm = Mean((Column (dt, Eval(Eval Expr(Expr(Char(MetricCols[i]))))))),
exstd = StdDev((Column (dt, Eval(Eval Expr(Expr(Char(MetricCols[i]))))))),
);
Limits = Column(dt,MetricCols[i]) << GetProperty ("Speclimits");
//Loop to run through all configs and fill the table
For( j= 1 ,j <= NItems(ColumnSplitBy) , j++,
Show(j );
y = Eval Expr(
CpkTable << AddRows(
{:Metric = Expr(Char( MetricCols[i] ) ) ;
As Column(Splitby) = Expr(Char( ColumnSplitBy[j] ) ) ;
:LSL= Expr(Try(Limits["LSL"]));
:USL= Expr(Try(Limits["USL"]));
:N= exc[j];
:Mean= exm[j];
:StdDev= exstd[j];
};)
);
Print(y);
Try(Eval(y));
); //For j */
); //For iSalut Jarmo,
Oui, j'ai essayé le script ci-dessus et il fonctionne correctement et rapidement sur un gros fichier de données.
Merci beaucoup!!
- Prédicateur
suJe suppose que vous souhaitez extraire tous ces éléments pour chacun des niveaux

Je pense que cela pourrait être encore plus rapide (au moins c'est plus facile à écrire)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Probe.jmp", invisible);
cont_cols = dt << Get Column Names("Continuous", "String");
ow = dt << Oneway(
Y(Eval(cont_cols)),
X(:Site),
Means and Std Dev(1),
SendToReport(
Dispatch(
{"Means and Std Deviations"},
"Std Dev Lower 95%",
NumberColBox,
{Visibility("Visible")}
),
Dispatch(
{"Means and Std Deviations"},
"Std Dev Upper 95%",
NumberColBox,
{Visibility("Visible")}
)
),
Invisible
);
tb = Report(ow[1])[Outline Box("Means and Std Deviations"), Table Box(1)];
dt_stats = tb << Make Combined Data Table;
tb << close window;
</CODE>You can run Oneway for all of your columns at the same time WITH Means and Std Dev enabled (and "hidden" columns visible), get reference to first table box and then use << Make Combined Data Table. You will get result like this</P>
<P> </P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_2-1716921037152.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_2-1716921037152.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/64563iD1351A0AB3071D45/jthi_2-1716921037152.png" role="button" title="jthi_2-1716921037152.png" alt="jthi_2-1716921037152.png" /></span></SPAN></P>
<P>Vous devriez alors pouvoir utiliser Update pour ajouter les colonnes dont vous avez besoin à votre table finale.</P>
<P> </P>
<P>Si cela ne fonctionne pas pour une raison quelconque, la boucle le fera et il existe peu d'options pour y parvenir. Utilisez << Créer dans la table de données et mettre à jour OU récupérez les résultats de la zone de tableau dans des listes (<< Obtenir peut suffire) et mettez à jour vos données à l'aide de listes + d'indices de table de données.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-761889" slang="en-US" mode="CREATE">Re : Remplir le tableau récapitulatif avec les intervalles de confiance principaux et standard</LINGO-SUB><LINGO-BODY id="lingo-body-761889" slang="en-US" mode="CREATE"><P>Bonjour Jarmo,</P><P> </P><P>Merci beaucoup, il faut entre 8 et 10 secondes pour que le script s'exécute, ce qui est génial puisque PROBE.JMP est un fichier assez lourd.</P><P> </P><P>Avez-vous une astuce pour remplir un tableau récapitulatif avec « <STRONG>tb_vals »</STRONG> pour chaque métrique et regroupement ? J'ai essayé de le faire chaque valeur à la fois et mon script est maintenant très lent. Existe-t-il un moyen de remplir rapidement une matrice entière dans un tableau ?</P></LINGO-BODY><LINGO-SUB id="lingo-sub-761834" slang="en-US" mode="CREATE">Re : Remplir le tableau récapitulatif avec les intervalles de confiance principaux et standard</LINGO-SUB><LINGO-BODY id="lingo-body-761834" slang="en-US" mode="CREATE"><P>Ma réponse n'a pas répondu à la question</P>
<P> </P>
<PRE><CODE class=" language-jsl">
Je ne suis pas sûr de ce qui signifie "beaucoup" dans votre cas, mais j'essaierais quand même d'abord d'utiliser la plateforme fit y by x.
Ouvrez-le avec le moins de choses possible ET ouvrez-le en tant que rapport invisible (ou privé selon votre version de jmp). Après avoir extrait les valeurs, fermez-le.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Probe.jmp", invisible);
cont_cols = dt << Get Column Names("Continuous", "String");
start = Tick Seconds();
For Each({cont_col}, cont_cols,
fit = dt << Oneway(
Y(Eval(cont_col)),
X(:Site),
Invisible
);
tb_vals = Report(fit)[Outline Box("Means and Std Deviations"), Table Box(1)] << get;
fit << close window;
// save results from tb_vals
);
end = Tick Seconds();
show(end - start);