No importa, lo descubrí por mi cuenta:
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 )})
)
)
)
)
);
PopulateSpecs ya no funciona en JMP 13 (a menos que esté haciendo algo mal). Intenté "arreglarlo", pero no funciona. Supongo que tiene que ver con la evaluación de los valores actuales de lsl, usl y tar en el bucle, pero no puedo averiguar cómo hacer que funcione. Sugerencias?
// ******************************************************************************************
// 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 )})
)
)
);
En el código debajo de 'dt' ('dt1') hay una referencia a la tabla que contiene los datos (los límites de especificación). Para usar el código, haga 'Archivo> Nuevo> Nuevo script', corte y pegue en la ventana que aparece, luego haga 'Editar> Ejecutar script'.
NombresDefaultToHere ( 1 ) ;
// Hacer algunos límites de especificaciones para trabajar con
dt1 =
Nueva mesa ( "Límites de especificaciones" ,
Añadir filas ( 3 ) ,
Nueva Columna ( "Proceso" ,
Personaje ,
"Nominal" ,
Establecer valores ( { "NPN1" , "PNP1" , "PNP2" } )
) ,
Nueva Columna ( "LSL" ,
Numérico ,
"Continuo" ,
Establecer valores ( El 104.412948990151 , 164.389518443879 , - 136.122122529984 ] )
) ,
Nueva Columna ( "Objetivo" ,
Numérico ,
"Continuo" ,
Establecer valores ( El 118.153221027253 , 297.017932186294 , 465.441998810449 ] )
) ,
Nueva Columna ( "USL" ,
Numérico ,
"Continuo" ,
Establecer valores ( El 131.893493064355 , 429.64634592871 , 1067.00612015088 ] )
)
) ;
// Hacer algunos datos para trabajar con
dt =
Nueva mesa ( "Datos" ,
Añadir filas ( 10 ) ,
Nueva Columna ( "NPN1" ,
Numérico ,
"Continuo" ,
Establecer valores (
El 114.555760105678 , 120.043693059459 , 114.926510466106 , 111.756445551183 ,
111.545085144313 , 113.52359591958 , 111.749308571209 , 114.411433304976 ,
118.48975048042 , 113.171122695149 ]
)
) ,
Nueva Columna ( "PNP1" ,
Numérico ,
"Continuo" ,
Establecer valores (
El 322.616751775796 , 333.128079728678 , 348.978757216574 , 268.548094462492 ,
295.073165929223 , 323.833298568833 , 369.320490694357 , 342.987400315929 ,
315.52243608245 , 288.978183718528 ]
)
) ,
Nueva Columna ( "PNP2" ,
Numérico ,
"Continuo" ,
Establecer valores (
El 469.390289765043 , 437.781112798903 , 532.12814730405 , 373.058628529111 ,
338.900737368942 , 469.992171436316 , 563.084459366587 , 479.378108668814 ,
530.265608347575 , 421.454501563007 ]
)
)
) ;
// ************************************************ ******************************************
// Dada una referencia de columna, establece la propiedad spec liomits
// ************************************************ ******************************************
setSpecLimits = función ({ do , lsl , usl , alquitrán } ,
cmd = Expr ( do << SetProperty ( "Límites de especificaciones" , { LSL ( expr ( lsl )) , USL ( expr ( usl )) , Objetivo ( expr ( alquitrán ))})) ;
evaluar ( evalexpr ( cmd )) ;
) ;
// ************************************************ ******************************************
// Dado una tabla dt y una tabla dt1 que contiene límites de especificación, llena las propiedades de límite de especificación en dt
// ************************************************ ******************************************
PopulateSpecs = Función ({ dt , dt1 } , { Predeterminado local } ,
// Loop sobre filas de dt1, y si hay una columna coincidente en dt establece su propiedad
clist = dt << GetColumnNames ( Numérico , Cuerda ) ;
para ( r = 1 , r <= NRows ( dt1 ) , r ++,
nombre = Columna ( dt1 , "Proceso" ) [ r ] ;
lsl = Columna ( dt1 , "LSL" ) [ r ] ;
usl = Columna ( dt1 , "USL" ) [ r ] ;
alquitrán = Columna ( dt1 , "Objetivo" ) [ r ] ;
Si ( Contiene ( clist , nombre ) , SetSpecLimits ( Columna ( dt , nombre ) , lsl , usl , alquitrán )) ;
)
) ;
// Definir las propiedades de la columna de límite de especificación en dt usando dt1
Espere ( 3 ) ;
PopulateSpecs ( dt , dt1 ) ;
// Iniciar la plataforma de capacidad (que utiliza las propiedades de la columna automáticamente)
cols = dt << getColumnNames ;
dt << Capacidad ( Y ( Evaluar ( cols ))) ;