Sumar/Restar valores de dos archivos jmpHola,
@txnelson @pmroz
Necesito ayuda para compensar el conjunto de datos usando el valor de referencia en JSL
La primera tabla contiene el valor de referencia.

La segunda tabla contiene las medidas de las tiras probadas.

Quiero restar la media de la tira A de la tabla de datos de referencia y luego agregarla al conjunto de datos.
Por ejemplo :
paso 1. el valor medio para las tiras A para corriente = (10+3)/2 = 6,5. Entonces, 400 - 6,5 = 393,5 y lo mismo para otras tiras
paso 2. Sume 393,5 a la segunda tabla de datos de la tira A >> 393,2 + 10 = 403,2 y lo mismo para las demás tiras
La tabla final debe tener los siguientes valores:

Consulte el archivo adjunto para obtener más detalles.
¡Gracias por su ayuda!
Esto lo intenté:
Names Default To Here( 1 );
dt = Current data table();
dtOffset = Open(Limits);
colList = dt << get column names(string);
For( i = 1, i <= N Items( colList ), i++,
theRow = dtOffset << get rows where( dtOffset:Tests == colList[i] );
show(i,nrows(therow));
If( N Rows( theRow ) == 1,
offset = dtOffset:Offset[theRow[1]];
For( k = 1, k <= N Rows( dt ), k++,
Column( dt, i )[k] = Column( dt, i )[k] + offset
);
);
);
Ingeniería de Calidad y ProcesosRe: Sumar/Restar valores de dos archivos jmp@txnelson
¿Puedes identificar lo que está yendo mal?
Re: Sumar/Restar valores de dos archivos jmp@txnelson
A continuación se muestra la pantalla breve de los resultados que espero. Adjunto la tabla de datos del resultado final.
Aquí están los pasos:
1. Leer la tabla de datos y la tabla de datos de referencia.
2. Genere una nueva ventana para seleccionar el número del sitio,
3. Según la entrada del usuario (número de sitio 1 o 2), alinee esos datos con los valores de la tabla de datos de referencia.
Tome la media por ID de oblea, aplique el desplazamiento a la tabla de datos principal

Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(dt1),i++,
theTest = dt1:Tests[i];
try(column(dt2,theTest) << set property("TheMean", dt1:Mean[i]));
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
get = ct << Get Selected ();
)
);
sitenum = Transform Each({str}, get, Num(str));
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW> r = dt2 << get rows where(dt2:sitenumber == sitenum[1]); /// something needs to change here ****&&&**&&&&**&&&
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
mean = column(dt2, Col_list1[c]) << get property("theMean");
//measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
measure = mean - Col Mean(as Column( dt2, c ),:Wafer ID);
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
););
Re: Sumar/Restar valores de dos archivos jmpTu código me resulta confuso.Cuando tengas
Por cada fila
Se procesa cada fila separada dentro de la tabla de datos.
Cuando se utiliza Get Row Where(), solo pasa los datos una vez.¿Puede proporcionarnos una muestra de los resultados que espera?
Re: Sumar/Restar valores de dos archivos jmp¿Algún consejo Jim?
Re: Sumar/Restar valores de dos archivos jmpGracias, @txnelson
Utilicé la sintaxis para cada fila, pero el ciclo tarda 40 minutos en completarse. ¿Alguna forma alternativa?
For( c = 1, c <= N Col( dt2 ) -1, c++,
theMatrix = [];
name = Column( Col_List1[c] ) << Get name;
if (Contains( Col_List1[c], "Current"),
//For( r = 1, r <= N Rows( dt2 ), r++,
For Each Row(
<BR /> r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
mean = column(dt2, Col_list1[c]) << get property("theMean");
//measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
measure = mean - Col Mean(as Column( dt2, c ),:Wafer ID);
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
););Re: Sumar/Restar valores de dos archivos jmpEl cálculo de "medida" no se puede calcular.Ha escrito una línea de JSL que supone que está recorriendo una tabla de datos, pero no se está recorriendo las filas.
Re: Sumar/Restar valores de dos archivos jmp@txnelson
¡Disculparse! Adjunté archivos incorrectos. A continuación se muestran las tablas de datos actualizadas.
Lo intenté pero los resultados no son precisos.
Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(dt1),i++,
theTest = dt1:Tests[i];
try(column(dt2,theTest) << set property("TheMean", dt1:Mean[i]));
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
ft = ct << Get Selected Indices();
), ct << set all(1);
);
sitenum = {};
Insert Into (sitenum, ft);
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW>
Re: Sumar/Restar valores de dos archivos jmpAl echar un vistazo rápido al guión, aparecen un par de elementos.
- La tabla de datos de referencia no contiene ningún nombre de prueba que coincida con los nombres de las columnas en la tabla de datos.
- Obtener filas donde() no funcionará.¿Está intentando encontrar todas las filas que coincidan con el sitenum?Si es así debería ser
r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
Re: Sumar/Restar valores de dos archivos jmpHola Jim @txnelson ,
Pregunta rápida:
Modifiqué el script jsl y quiero filtrar filas según la selección de la casilla de verificación.
El siguiente script creará una nueva ventana, le pedirá al usuario que seleccione la casilla de verificación para el número de sitio.
Solo quiero agregar un desplazamiento medio a la selección de SiteNumber.
Si se selecciona SiteNumber 1, alinee solo esas filas. Adjunto ambos archivos
Intenté usar obtener filas donde pero los resultados no parecen ser precisos. Buscando algunas sugerencias
Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(dt1),i++,
theTest = dt1:Tests[i];
try(column(dt2,theTest) << set property("TheMean", dt1:Mean[i]));
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
ft = ct << Get Selected Indices();
), ct << set all(1);
);
sitenum = {2};
//Insert Into (sitenum, ft);
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW>
Re: Sumar/Restar valores de dos archivos jmpGracias Jim 
Re: Sumar/Restar valores de dos archivos jmpEstaba haciendo cambios en el código de Mark, basándose en problemas de sintaxis, no en problemas de lógica.He reelaborado el código y creo que esto funcionará.
Names Default To Here( 1 );
dt1 = open( "Reference data.jmp" );
dt2 = open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ) -1, c++,
theMatrix = [];
name = Column( dt2, c ) << Get Name;
For( r = 1, r <= N Rows( dt2 ), r++,
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
);
Re: Sumar/Restar valores de dos archivos jmpHola Jim,
Gracias por corregir pero tampoco pareció funcionar.

Re: Sumar/Restar valores de dos archivos jmpEras un "(" fuera de lugar).Aquí hay una versión corregida.
Names Default To Here( 1 );
dt1 = Open( "Reference data.jmp" );
dt2 = Open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ), c++,
name = Column( dt2, c ) << Get Name;
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - Column( dt2, c ) << Get As Matrix;
Column( dt2, c ) << Set Values( measure );
);
Re: Sumar/Restar valores de dos archivos jmpGracias Marcos. El código no parece funcionar

Re: Sumar/Restar valores de dos archivos jmpPruebe este ejemplo:
Names Default to Here( 1 );
dt1 = Open( "Reference data.jmp" );
dt2 = Open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ), c++,
name = Column( dt2, c ) << Get Name;
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - (Column dt2, c ) << Get As Matrix);
Column( dt2, c) << Set Values( measure );
);