行を選択し、それに基づいてさらに選択する1つの列の結果に基づいて行を選択できるデータテーブルがあります。次に、以前に選択した行に含まれている値に基づいて、その選択を拡張したいと思います。
私は試した
dt = Current Data Table();
dr << select where( :ctrlrange > 0.23 );
h = Column( dt, "reagentkit_id" ) << get Values;
dt << select where( :reagentkit_id == h );
JMPがフリーズしたので、それは機能しなかったようです。
データテーブルには多くの行が含まれる可能性があります。
これを実行したい理由は、ctrlrangeが0.23よりも高い場合があり、試薬からのすべてのデータが必要な場合です(ctrl範囲が0.23より高くない場合があります)。
スクリプティングRe:行を選択し、それに基づいてさらに選択します元の前提は、思ったとおりに機能しません。<< get valuesは、選択した行から値を返すだけではありません。
これは、選択基準を使用して機能する例です。これは非常に効率的です。
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
dt << select where(:weight <100);
dt << hide and exclude;
dt_rgt = dt << Summary(
Group( :name ),
Freq( "None" ),
Weight( "None" ),
link to original data table(1)
);
dt_rgt << delete rows;
dt << clear rowstates;
dt_rgt << select all rows;
close( dt_rgt, nosave);Re:行を選択し、それに基づいてさらに選択しますdt = Current Data Table();
dt << select where( :ctrlrange > 0.23 );
dt << Subset( Output Table( "Sel" ), Selected Rows( 1 ), selected Columns( 0 ) );
dt_rgt = dt << Summary(
Group( :reagentkit_id ),
N Catagories( :reagentkit_id ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 1 )
);
//h = Column( Sel, "reagentkit_id" ) << get Values;
dt_rgt << select where( Contains( Sel, :reagentkit_id ) );
dt_rgtテーブルで選択する値についてSelテーブルを参照する場所を選択する必要があることを示す方法がわかりません。
何か案は??
Re:行を選択し、それに基づいてさらに選択しますctrlrangeが0.23より大きい行を選択する必要があります。 次に、別のテーブルにサブセット化し、そのテーブルを使用して元のテーブルからreagentkit_idを選択しますか?Re:行を選択し、それに基づいてさらに選択します良いアイデア。
私はこれを試しました
dt = Current Data Table();
dt << select where( :ctrlrange > 0.23 );
h = Column( dt, "reagentkit_id" ) << get Values;
dt_rgt = dt << Summary(
Group( :reagentkit_id ),
N Catagories( :reagentkit_id ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 1 )
);
dt_rgt << select where( Contains( h, :reagentkit_id ) );
リンクされたサマリーテーブルを作成しました。 ただし、元のデータテーブルのすべての行が選択されました。 :ctrlrangeの1つが0.23を超えていたため、選択されたreagentkit_idを含むデータの行を削除しないでください。
コメントアウトした場合dt_rgt<
Re:行を選択し、それに基づいてさらに選択しますリスト「h」が本当に長い場合、それは非常に集中的なスクリプトになります。 :reagentkit_id列に要約データテーブルグループを作成することをお勧めします。 [元のデータテーブルへのリンク]が選択されていることを確認してから、サマリーテーブルのすべての行を選択します。 元のテーブルへのリンクにより、サマリーテーブルからのすべての一致が元のテーブルで選択されます。Re:行を選択し、それに基づいてさらに選択しますフォーラムに投稿したときのタイプミスでした。
やっています
dt = Current Data Table();
dt << select where( :ctrlrange > 0.23 );
h = Column( dt, "reagentkit_id" ) << get Values;
dt << select where( Contains( h, :reagentkit_id ) );
290万行を超えるテーブルで使用すると、JMPは応答しません。これは集中的なプロセスだと思います
Re:行を選択し、それに基づいてさらに選択します私はこれがあなたが望むものだと信じています
dt=current data table();
// You have a typo.....you are specifying dr and it should be dt....I assume
//dr<<SELECT where="">0.23);
dt<</SELECT><SELECT where="">0.23);
h=Column(dt, "reagentkit_id")<<GET values=""></GET></SELECT>
Re:行を選択し、それに基づいてさらに選択します選択に「展開」が表示されましたが、その選択の別の列の値から、前の選択に基づいて展開する方法を理解できませんでした。