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 métriques 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 l'écart type : de la même manière que dans l'analyse suivante :
Ajuster Y par X > Moyenne et Écart-type.
Je pourrais exécuter TOUTES les analyses une par une avec une boucle FOR() et utiliser DisplayBox pour sélectionner chaque valeur et remplir ma table de données récapitulatives, mais je préférerais vraiment ne pas le faire, cela ralentirait BEAUCOUP l'analyse puisque je traite généralement plus de 1000 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 comme 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
Je 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 ensuite pouvoir utiliser Mettre à jour 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 fonctionnera et il existe peu d'options pour y parvenir. Utilisez << Make Into Data Table and Update OU récupérez les résultats de la zone de tableau dans des listes (<< Get peut suffire) et mettez à jour vos données à l'aide de listes + abonnements de table de données.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-761889" slang="en-US" mode="CREATE">Ré: Remplir le tableau récapitulatif avec les intervalles de confiance principaux et écart-type</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 car 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">Ré: Remplir le tableau récapitulatif avec les intervalles de confiance principaux et écart-type</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 sais pas ce qui est « beaucoup » dans votre cas, mais j'essaierais quand même d'abord d'utiliser la plate-forme Fit y by x.
Ouvrez-le avec le moins de fichiers 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);