tant pis, je l'ai compris par moi-même:
populateSpecs = Function({dt, dt1}, {Default Local},
// Loop over rows of dt1, and iff there is a matching column in dt set its property
clist = dt << GetColumnNames(Numeric, String);
for (r=1, r<=NRows(dt1), r++,
name = Column(dt1, "Variable")[r];
lsl = Column(dt1, "LSL")[r];
usl = Column(dt1, "USL")[r];
tar = Column(dt1, "Target")[r];
Eval(
Eval Expr(
if (Contains(clist, name), Column(dt, name) << Set Property ( "Spec Limits",
{LSL( Expr(lsl) ), USL( Expr(usl) ), Target( Expr(tar) ), Show Limits( 1 )})
)
)
)
)
);
Les populateSpecs ne fonctionnent plus dans JMP 13 (à moins que je ne fasse quelque chose de mal). J'ai essayé de le "réparer", mais ça ne marche pas. Je suppose que cela a à voir avec l’évaluation des valeurs actuelles de lsl, usl et tar dans la boucle, mais je ne vois pas comment le faire fonctionner. Suggestions?
// ******************************************************************************************
// Given a table dt, and a table dt1 containing spec limits, populates spec limit properties in dt
// ******************************************************************************************
populateSpecs = Function({dt, dt1}, {Default Local},
// Loop over rows of dt1, and iff there is a matching column in dt set its property
clist = dt << GetColumnNames(Numeric, String);
for (r=1, r<=NRows(dt1), r++,
name = Column(dt1, "Variable")[r];
lsl = Column(dt1, "LSL")[r];
usl = Column(dt1, "USL")[r];
tar = Column(dt1, "Target")[r];
if (Contains(clist, name), Column(dt, name) << Set Property ( "Spec Limits",
{LSL( lsl ), USL( usl ), Target( tar ), Show Limits( 1 )})
)
)
);
Dans le code ci-dessous, 'dt' ('dt1') est une référence à la table contenant les données (les limites de spécification). Pour utiliser le code, faites "Fichier> Nouveau> Nouveau script", coupez et collez dans la fenêtre qui apparaît, puis "Edition> Exécuter le script".
NamesDefaultToHere ( 1 ) ;
// Faire des limites de spécifications pour travailler avec
dt1 =
Nouvelle table ( "Limites de spécification" ,
Ajouter des lignes ( 3 ) ,
Nouvelle colonne ( "Processus" ,
Personnage ,
"Nominal" ,
Définir des valeurs ( { "NPN1" , "PNP1" , "PNP2" } )
) ,
Nouvelle colonne ( "LSL" ,
Numérique ,
"Continu" ,
Définir des valeurs ( [ 104.412948990151 , 164.389518443879 , - 136.122122529984 ] )
) ,
Nouvelle colonne ( "Cible" ,
Numérique ,
"Continu" ,
Définir des valeurs ( [ 118.153221027253 , 297.017932186294 , 465.441998810449 ] )
) ,
Nouvelle colonne ( "USL" ,
Numérique ,
"Continu" ,
Définir des valeurs ( [ 131.893493064355 , 429.64634592871 , 1067.00612015088 ] )
)
) ;
// Crée des données avec lesquelles travailler
dt =
Nouvelle table ( "Les données" ,
Ajouter des lignes ( dix ) ,
Nouvelle colonne ( "NPN1" ,
Numérique ,
"Continu" ,
Définir des valeurs (
[ 114.555760105678 , 120.043693059459 , 114.926510466106 , 111.756445551183 ,
111.545085144313 , 113.52359591958 , 111.749308571209 , 114.411433304976 ,
118.48975048042 , 113.171122695149 ]
)
) ,
Nouvelle colonne ( "PNP1" ,
Numérique ,
"Continu" ,
Définir des valeurs (
[ 322.616751775796 , 333.128079728678 , 348.978757216574 , 268.548094462492 ,
295.073165929223 , 323.833298568833 , 369.320490694357 , 342.987400315929 ,
315.52243608245 , 288.978183718528 ]
)
) ,
Nouvelle colonne ( "PNP2" ,
Numérique ,
"Continu" ,
Définir des valeurs (
[ 469.390289765043 , 437.781112798903 , 532.12814730405 , 373.058628529111 ,
338.900737368942 , 469.992171436316 , 563.084459366587 , 479.378108668814 ,
530.265608347575 , 421.454501563007 ]
)
)
) ;
// ************************************************ ******************************************
// Étant donné une référence de colonne, définit la propriété liomits
// ************************************************ ******************************************
setSpecLimits = une fonction ({ c , lsl , usl , le goudron } ,
cmd = Expr ( c << SetProperty ( "Limites de spécification" , { LSL ( expr ( lsl )) , USL ( expr ( usl )) , Cible ( expr ( le goudron ))})) ;
eval ( evalexpr ( cmd )) ;
) ;
// ************************************************ ******************************************
// Étant donné une table dt et une table dt1 contenant des limites de spécification, renseigne les propriétés de limite de spécification dans dt
// ************************************************ ******************************************
peuplerSpéc = Une fonction ({ dt , dt1 } , { Local par défaut } ,
// Boucle sur les lignes de dt1, et si il y a une colonne correspondante dans dt, définit sa propriété
clist = dt << GetColumnNames ( Numérique , Chaîne ) ;
pour ( r = 1 , r <= NRows ( dt1 ) , r ++,
prénom = Colonne ( dt1 , "Processus" ) [ r ] ;
lsl = Colonne ( dt1 , "LSL" ) [ r ] ;
usl = Colonne ( dt1 , "USL" ) [ r ] ;
le goudron = Colonne ( dt1 , "Cible" ) [ r ] ;
si ( Contient ( clist , prénom ) , SetSpecLimits ( Colonne ( dt , prénom ) , lsl , usl , le goudron )) ;
)
) ;
// Définit les propriétés de la colonne de limite de spécification dans dt à l'aide de dt1
Attendre ( 3 ) ;
peuplerSpéc ( dt , dt1 ) ;
// Lancer la plateforme Capability (qui utilise automatiquement les propriétés de la colonne)
cols = dt << getColumnNames ;
dt << Aptitude ( Y ( Eval ( cols ))) ;