循環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>如果我的選擇在每次迭代後對數據表和圖形有效,直到用戶更改該部分,那將是很好的。
非常感謝!
Re:循環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>非常感謝您的回复,我學到了非常有用的命令!
Re:循環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 );
您還可能希望探索對主數據表進行子集化的功能,或者從主表創建摘要數據表,並使用該選項“鏈接到原始表”。 然後,您可以在子集或匯總數據表上放置數據過濾器,它將自動複製原始表中的更改。
Re:循環II的數據過濾器感謝您的回答。不幸的是,我無法從幫助==>腳本索引==>數據過濾器中得到提示..........
我嘗試了多種選擇,但沒有任何效果。
如何從df0獲取where子句或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*/ )Re:循環II的數據過濾器我建議在更新之前,從數據過濾器中檢索Where子句,然後執行更新,然後重新應用檢索到的Where子句。
看到
幫助==>腳本索引==>數據過濾器..........
詳情和例子