Script pour les cartes de contrôle (toutes les colonnes numériques) avec des limites enregistrées dans une tableSalut,
J'essaie de générer une fenêtre/rapport avec plusieurs cartes de contrôle (toutes les colonnes numériques de la table de données). Jusqu'à présent, j'ai pu générer ce rapport. Mais je ne peux pas enregistrer toutes les limites dans une table de données. Quelqu'un peut-il m'aider?
Suite à mon code
dt = Current Data Table ();
//Deselection von allen Spalten
cols = dt << get column names();
For(i = 1, i <= N Col(dt), i++,
cols[i] << set selected (0)
);
//Selection
cc = dt << Get Column Names( numeric );
ncols = N Items( cc );
For( i = 1, i <= ncols, i++,
cc[i] << Set Selected( 1 )
);
nw1 = New Window ("Control Charts");
For( i = 1, i <= ncols, i++,
test = cc[i];
conc = Control Chart(
Group Size( 1 ),
KSigma( 3 ),
Chart Col(as Column (test) ),
Chart Type( Moving Range )
); nw1 << append (Report(conc)); conc << Close Window);
nw1 << in New Table;Re : Script pour les cartes de contrôle (toutes les colonnes numériques) avec des limites enregistrées dans une table. . . et voici une alternative utilisant les propriétés de colonne :
NamesDefaultToHere(1);
// Make a table with some random data
dt = NewTable("Charts");
n = 5;
dt << addMultipleColumns("C_", n, Numeric);
dt << addRows(20);
for(c=1, c<=n, c++, Column(dt, "C_"||Char(c)) << formula(RandomNormal(0, 1)));
dt << runFormulas;
// Put the charts into a single window
nw1 = New Window ("Control Charts",
For( c = 1, c <= n, c++,
thisCC = dt << Control Chart(
Group Size( 1 ),
KSigma( 3 ),
Chart Col(Column(dt, "C_"||Char(c))),
Chart Type( Moving Range )
);
// Save the computed limits as a column property
thisCC << inColumn;
);
);
// Make a blank limits table
dt2 = NewTable("Limts",
NewColumn("Column", Character),
NewColumn("Avg", Numeric),
NewColumn("LCL", Numeric),
NewColumn("UCL", Numeric),
<< addRows(n)
);
// Populate the limits table by parsing the saved column property
For( c = 1, c <= n, c++,
clExpr = Column(dt, "C_"||Char(c)) << getProperty("Control Limits");
Column(dt2, "Column")[c] = "C_"||Char(c);
Column(dt2, "Avg")[c] = Arg(Arg(Arg(clExpr, 1), 1), 1);
Column(dt2, "LCL")[c] = Arg(Arg(Arg(clExpr, 1), 2), 1);
Column(dt2, "UCL")[c] = Arg(Arg(Arg(clExpr, 1), 3), 1);
);
Je soupçonne que cela pourrait être plus simple avec Générateur de cartes de contrôle , mais je n'ai pas vérifié (et vous pouvez de toute façon avoir des raisons d'utiliser l'"ancienne" plate-forme).
Re : Script pour les cartes de contrôle (toutes les colonnes numériques) avec des limites enregistrées dans une tableMerci beaucoup. Cela fonctionne parfaitement. Cela vous fera gagner beaucoup de temps 
Re : Script pour les cartes de contrôle (toutes les colonnes numériques) avec des limites enregistrées dans une tableVoici ma solution à votre code. J'ai commenté le code que je n'ai pas vu servir à quelque chose pour ce problème spécifique
Names Default To Here( 1 );
dt = Current Data Table();
//Deselection von allen Spalten
/*cols = dt << get column names();
For( i = 1, i <= N Col( dt ), i++,
cols[i] << set selected( 0 )
);*/
//Selection
cc = dt << Get Column Names( numeric );
/*ncols = N Items( cc );
For( i = 1, i <= ncols, i++,
cc[i] << Set Selected( 1 )
);*/
nw1 = New Window( "Control Charts" );
For( i = 1, i <= N Items( cc ), i++,
Current Data Table( dt ); // Should not be required, but script would not work without it
conc = dt << Control Chart( Group Size( 1 ), KSigma( 3 ), Chart Col( As Column( cc[i] ) ), Chart Type( Moving Range ) );
concDT = conc << in New Table;
concDT << New Column( "Column", character, set each value( Char( cc[i] ) ) );
Column( concDT, Char( cc[i] ) ) << set name( "Value" );
If( i == 1,
baseDT = concDT,
baseDT << concatenate( concDT, append to first table( 1 ) );
Close( concDT, nosave );
);
nw1 << append( Report( conc ) );
conc << Close Window;
);