¡Hola!
Actualmente estoy trabajando en un proyecto que utiliza JMP/JSL y, en mis datos, necesito eliminar o borrar valores de varias celdas según una condición. Vea ejemplos de datos sin procesar y resultados requeridos a continuación.
Datos brutos:
| Prueba1 | P/F 1 | Prueba2 | P/F 2 | Prueba3 | P/F 3 | Prueba4 | P/F 4 | Prueba5 | P/F 5 |
| 1 | PAG | 2 | PAG | 4 | PAG | 9 | F | 3 | PAG |
| 5 | PAG | 8 | F | 4 | PAG | 6 | F | 2 | PAG |
| 7 | PAG | 1 | PAG | 6 | F | 5 | F | 6 | F |
| 4 | PAG | 1 | PAG | 9 | F | 9 | F | 9 | F |
| 6 | F | 4 | PAG | 10 | F | 10 | F | 8 | F |
Salida requerida:
| Prueba1 | P/F 1 | Prueba2 | P/F 2 | Prueba3 | P/F 3 | Prueba4 | P/F 4 | Prueba5 | P/F 5 |
| 1 | PAG | 2 | PAG | 4 | PAG | 9 | F | * | * |
| 5 | PAG | 8 | F | * | * | * | * | * | * |
| 7 | PAG | 1 | PAG | 6 | F | * | * | * | * |
| 4 | PAG | 1 | PAG | 9 | F | * | * | * | * |
| 6 | F | * | * | * | * | * | * | * | * |
Lo que se requiere aquí es borrar todas las celdas siguientes una vez que se activa la primera F (falla).
Estoy trabajando en datos de gran tamaño y creo que esto solo se puede hacer mediante secuencias de comandos.
Probé funciones de bucle pero hasta ahora ninguna funciona. Realmente no estoy seguro de si esto es posible en JSL.
¡Gracias de antemano por su ayuda!
¡Esto realmente resolvió el problema! ¡Prestigio!
También me sorprendió que funcionara en menos de un segundo para miles de celdas.
¡¡Gracias!!
Vea si esto funciona para usted.
Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Test1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [1, 5, 7, 4, 6] )
),
New Column( "P/F 1",
Character( 16 ),
"Nominal",
Set Values( {"P", "P", "P", "P", "F"} )
),
New Column( "Test2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 1, 1, 4] )
),
New Column( "P/F 2",
Character( 16 ),
"Nominal",
Set Values( {"P", "F", "P", "P", "P"} )
),
New Column( "Test3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4, 4, 6, 9, 10] )
),
New Column( "P/F 3",
Character( 16 ),
"Nominal",
Set Values( {"P", "P", "F", "F", "F"} )
),
New Column( "Test4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9, 6, 5, 9, 10] )
),
New Column( "P/F 4",
Character( 16 ),
"Nominal",
Set Values( {"F", "F", "F", "F", "F"} )
),
New Column( "Test5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [3, 2, 6, 9, 8] )
),
New Column( "P/F 5",
Character( 16 ),
"Nominal",
Set Values( {"P", "P", "F", "F", "F"} )
)
);
bad_rows = [];
for(i=1, i<=ncols(dt), i++,
col = Column(dt, i);
if(col << Get Data Type == "Character", //this is an assumption that your P/F cols are the only char
if(nrows(bad_rows), //check if there's anything to clear
col[bad_rows] = ""; // clear character
);
bad_rows |/= loc(col <<GET values=""></GET>