Si / alors scriptBonjour groupe, j'espère que quelqu'un pourra vous aider!
Je cherche un morceau de code pour aider avec certains filtrage if / then.
Dans la table de données jointe, il y a divers numéros de lot avec plusieurs SampleID, de différentes "saveurs".
Le but est ceci:
Si le numéro de lot est la première instance, il sera sélectionné. Si la ligne suivante est identique, elle sera ignorée et continuera à être ignorée jusqu'à ce qu'un nouveau numéro de lot apparaisse.
Cette nouvelle première instance du prochain numéro de lot sera sélectionnée. Et continuer.
J'aimerais ensuite que ces lignes sélectionnées soient sous-configurées dans un nouveau tableau de données.
J'espère que quelqu'un sait si c'est possible. JMP peut faire n'importe quoi, alors je suis sûr que c'est le cas, je ne sais pas comment.
Merci beaucoup!
Re: Si / Alors script @kwmcm ,
Peut-être quelque chose comme ça
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: Si / Alors scriptOUI! Ceci est exactement ce que je cherchais!
Je vous remercie!
Re: Si / Alors scriptSi je comprends votre question et si vos lots sont situés tous ensemble, alors ce code fonctionnera
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: Si / Alors scriptIl doit d'abord être trié par LOT #, mais vous l'avez. Le code est donc:
dt = Current Data Table();
dt << (select where( :LOT# != Lag( LOT# ) ));
dt << subset( selected rows( 1 ), selected columns only( 0 ) );
La fonction Lag regarde la valeur de l'observation précédente.