If / Thenスクリプトこんにちはグループ、私はそこに誰かが助けることができる願っています!
私はいくつかのif / thenフィルタリングを手助けするコードを探しています。
添付のデータ表には、さまざまな「フレーバー」の複数のSampleIDがあるさまざまなロット番号があります。
目標はこれです。
LOT#が最初のインスタンスの場合は、それが選択されます。次の行が同じ場合は、それをスキップし、新しいLOT#が見つかるまでスキップします。
次のLOT#の新しい最初のインスタンスが選択されます。そして続けます。
選択した行を新しいデータテーブルにサブセット化します。
これが可能かどうか誰かが知っていると思います。JMPは何でもできるので、それは間違いないと思います。
本当にありがとう!
Re:If / Thenスクリプト @kwmcm 、
たぶんこんな感じ
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スクリプトはい!これこそまさに私が探していたものです!
ありがとうございました!
Re:If / Thenスクリプト私があなたの質問を理解していて、そしてあなたのロットがすべて一緒に配置されているなら、このコードはうまくいくでしょう
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スクリプト最初にLOT#でソートする必要がありますが、あなたはそれを持っています。だからコードは:
dt = Current Data Table();
dt << (select where( :LOT# != Lag( LOT# ) ));
dt << subset( selected rows( 1 ), selected columns only( 0 ) );
Lag関数は前の観測からの値を調べます。