ループIIのデータフィルタこんにちは、
私は5秒ごとに更新された(クエリによるオリジナルのスクリプトの)データテーブルを持っており、他のテーブルに追加されます。ここまでは順調ですね。各反復の後に選択がクリアされないようにするにはどうすればよいですか?
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal"),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
df = dt0 << Data Filter(
Add Filter( Columns( :sex ) )
);
n=0;
e=10;
startwork = Function( {},
dt1=Open( "$sample_data/big class.jmp");
dt0 << Concatenate( current data table(), "Append to First Table");
n+=1;
Close (dt1, nosave);
if(n<E></E>セクションがユーザーによって変更されるまで、すべての反復の後に私の選択がデータテーブルとグラフに対して有効であるならば、それは素晴らしいでしょう。
どうもありがとう!
再:ループIIのデータフィルタスクリプトをループに実装した場合(最初の質問のように)、選択は行番号に基づいて有効になります。列選択に基づいた選択が必要です。そのために私は可能な回避策を見つけました:
リストボックスを作成し、テーブルにこの選択を使用します。
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal"),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
List={"F","M"};
gb=new window("Choice",
LB1=List Box(List, width(150), maxSelected(5), nlines(1))
);
n=0;
e=10;
startwork = Function( {},
dt1=Open( "$sample_data/big class.jmp");
Choice=LB1 << get selected;
dt0 << Concatenate( current data table(), "Append to First Table");
dt0 << Select Where( Contains( Choice, :sex ) );
n+=1;
Close (dt1, nosave);
if(n<E></E>あなたの回答に感謝します、私はとても役に立つコマンドを学びました!
再:ループIIのデータフィルタこれは少し異なるアプローチです。 これは、"Test"データフィルタからの<< Get Scriptメッセージを使用し、次にわずかな変更を加えてからBig Classデータテーブルに適用します。 全体がテストデータテーブルのデータフィルタに適用されたフィルタ変更ハンドラによって引き起こされます。
Names Default To Here( 0 );
dt1 = Open( "$sample_data/big class.jmp" );
dt0 = New Table( "Test",
New Column( "name", Character, "Nominal" ),
New Column( "age", numeric, continuous ),
New Column( "sex", Character, "Nominal", Values( {"F", "M", "F", "M", "F", "M", "F", "M"} ) ),
New Column( "height", numeric, continuous ),
New Column( "weight", numeric, continuous, )
);
df0 = dt0 << Data Filter( Add Filter( Columns( :sex ), /* variable get where selection df0*/ ) );
f = Function( {a},
dschar = Char( df0 << get script );
Try( df1 << close );
dschar = "df1 = dt1 " || Substr( dschar, 21 );
Eval( Parse( dschar ) );
Try( df1 << close );
);
rs = df0 << Make Filter Change Handler( f );
また、メインデータテーブルをサブセット化したり、メインテーブルからサマリーデータテーブルを作成したり、「元のテーブルにリンク」するオプションを使用したりすることもできます。 その後、サブセット化または要約されたデータテーブルにデータフィルタを配置すると、元のテーブルの変更内容が自動的に複製されます。
再:ループIIのデータフィルタご回答有難うございます。残念ながら、Help ==> Scripting Index ==>データフィルタからヒントを得られませんでした..........
複数のオプションを試しましたが、うまくいきません。
where節またはwhere引数をdf0から変数として取得し、それをwhere引数としてdf1に入れるにはどうすればよいですか。
<< get where句が見つかりましたが、これは単なるテキスト形式です...
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal", Values({"F", "M", "F", "M", "F", "M", "F", "M"})),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
df0 = dt0 << Data Filter(
Add Filter( Columns( :sex ),/* variable get where selection df0*/ )
);
dw0 = df0 << get where clause;
dt1=Open( "$sample_data/big class.jmp");
df1 = dt1 << Data Filter(
Add Filter( Columns( :sex) /* set where selection from df0*/ )再:ループIIのデータフィルタ更新前に、データフィルタからWhere句を取得してから更新を実行し、取得したWhere句を再適用することをお勧めします。
見る
ヘルプ==>スクリプトインデックス==>データフィルタ..........
詳細と例について