Si / Entonces scriptingHola grupo, espero que alguien pueda ayudar!
Estoy buscando una pieza de codificación para ayudar con un poco de si / y luego filtrando.
En la tabla de datos adjunta, hay varios números de lote con múltiples SampleID, de diferentes "sabores".
El objetivo es este:
Si el LOT # es la primera instancia, entonces será seleccionado. Si la siguiente fila es la misma, la omitirá y continuará saltando hasta que vea un nuevo LOT #.
Esa nueva primera instancia de la próxima LOT # será seleccionada. Y continuando.
Entonces me gustaría que esas filas seleccionadas se subdividieran en una nueva tabla de datos.
Espero que alguien sepa si esto es posible. JMP puede hacer cualquier cosa, así que estoy seguro de que lo es, pero no sé cómo.
¡Muchas gracias!
Re: If / Then scripting @kwmcm ,
Tal vez algo como esto
dt = Current Data Table();
dt << Sort(By(:LOT#),Order(Ascending),Replace Table(1));
// Get Lot #
LotNums = dt:LOT# << Get Values;
// Get Unique Lot #
UniqueLotNums = Associative Array(LotNums) << Get Keys;
// Define List and new column values
SaveList = [];
// Find first occurence
for(i = 1, i <= N Items(UniqueLotNums), i++,
SR = dt << Select Where(:LOT# == UniqueLotNums[i]) << Get Selected Rows;
dt << Clear Select ;
SaveList = SaveList || SR[1];
);
// New Column
NewCol = As List(J(N Rows(dt),1,"0"));
NewCol[SaveList,0] = LotNums[SaveList];
dt << New Column("test",character,nominal,<< Set values(NewCol));Re: If / Then scripting¡SÍ! ¡Esto es exactamente lo que estaba buscando!
¡Gracias!
Re: If / Then scriptingSi entiendo su pregunta, y si sus lotes están ubicados todos juntos, entonces este código funcionará
Names Default To Here( 1 );
dt = Current Data Table();
dt << select where( :name( "LOT#" )[Row()] != Lag( :name( "LOT#" )[Row()] ) );
dtNew = dt << subset( selected columns( 0 ), selected rows( 1 ) );
Re: If / Then scriptingPrimero debe ordenarse por LOT #, pero ya lo tiene. Entonces el código es:
dt = Current Data Table();
dt << (select where( :LOT# != Lag( LOT# ) ));
dt << subset( selected rows( 1 ), selected columns only( 0 ) );
La función de Lag mira el valor de la observación anterior.