Tengo una tabla que tiene ~ 4,000,000 filas de datos que incluyen una gran variedad de condiciones de prueba. Uso la función Explorar valores atípicos dentro de JMP para cambiar los valores de celda que cumplen los criterios atípicos a faltantes. Luego quiero tomar la identificación de la columna de la fila asociada con los valores faltantes y excluirlos del conjunto de datos principal. He intentado Obtener filas donde (falta) (: col) pero no puedo encontrar una manera de traducirlo efectivamente a la tabla principal. Esto es lo mejor que se me ocurre en este momento. Cualquier ayuda es siempre apreciada.
Try( If( Is Scriptable( dt_screen ), Close( dt_Screen, No Save ) ) );
Current Data Table( ::dt_testdata );
::dt_testdata = Current Data Table();
input_1 = {8, 8.25, 8.5, 8.75, 9, 9.25, 9.5, 9.75, 10, 10.25, 10.5, 10.75, 11, 14.75, 15, 15.25, 15.5, 15.75, 16, 16.25, 16.5, 16.75, 17, 17.25, 17.5, 17.75};
setid = {1100};
i = 1;
For( i = 1, i <= N Items( setid ), i++,
id = setid[i];
dt_Screen = New Table( "Screened" );
For( j = 1, j <= N Items( input_1 ), j++,
input_2 = input_1[j];
a = ::dt_testdata << Get Rows Where( :set_id == id & :teststate == "6" & :Input == input_2 );
If( j == 1,
b = Column(::dt_testdata, "wafer_number")[a];
Wait( 0 );
c = Column(::dt_testdata, "part_number")[a];
Wait( 0 );
d = Column(::dt_testdata, "channel")[a];
Wait( 0 );
e = Column(::dt_testdata, "RowCol_Chnl_PartNo" )[a];
Wait( 0 );
dt_Screen << New Column( "wafer_number", Character, Values( b ) );
Wait( 0 );
dt_Screen << New Column( "part_number", Character, Values( c) );
Wait( 0 );
dt_Screen << New Column( "channel", Character, Values( d ) );
Wait( 0 );
dt_Screen << New Column( "RowCol_Chnl_PartNo", Character, Values( e ) );
);
f = Column( ::dt_testdata, Eval( "Output" ) )[a];
Wait( 0 );
dt_Screen << New Column( Eval Insert( "Output @ ^input_2^"), Numeric, Values( f ) );
);
colsToScreen = dt_Screen << Get Column Names( Numeric );
Show( colsToScreen );
z = 1;
For( z = 1, z <= N Items( colsToScreen ), z++,
cols = Char( colsToScreen[z] );
test = colsToScreen[z];
eo = dt_Screen << Explore Outliers(
Y( Column( cols ) ),
K Sigma( 3 ),
Robust Fit Outliers( 1 ),
Show Only Columns With Outliers( 1 ),
Invisible
);
eoRep = Report( eo );
table = eoRep[Table Box( 1 )];
colListEO = eoRep[String Col Box( 1 )];
nCols = N Items( colListEO << get );
For( c = 1, c <= nCols, c++,
CMD = Expr(
table << Set Selected Rows( {colTBD} )
);
Substitute Into( CMD, Expr( colTBD ), Eval( c ) );
CMD;
eo << ColorCells( 1 );
eo << ChangeToMissing( 1 );
);
);
b = 1;
For( b = 2, b <= N Items( colsToScreen ), b++,
cols = colsToScreen[b];
RowColToDelete = dt_screen << Get Rows Where( Is Missing( cols ) );
c = 1;
For( c = 1, c <= N Items( RowColToDelete ), c++,
row = RowColToDelete[c];
::dt_testdata << Select Where( :RowCol_Chnl_PartNo == row ) << Hide( 1 ) << Exclude( 1 );
Wait( 0 );
);
);
);Si entiendo su problema, los ejemplos a continuación pueden brindarle una idea de cómo encontrar las filas de valores faltantes
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
dt:weight[3]=.;
dt:weight[5]=.;
col= dt<<GET column="" names=""></GET>Gracias por la respuesta Sr. Nelson. El problema no es encontrar las filas que faltan. El problema es el tiempo que lleva obtener los ID de columna de fila que faltan y ocultarlos y excluirlos en la tabla principal ... Si tuviera que trazar x = Entrada e Y = Salida como se ve en el ejemplo. Los valores atípicos de eliminación encontrarán los datos que están fuera de la distribución y los cambiarán a falta en dt_screen. Quiero poder tomar identificadores de columna de fila y ocultarlos / excluirlos en la tabla principal para limpiar este gráfico.
