[JSL bug] 將所有打開的表連接成1個表並關閉所有有人可以幫我看看下面的jsl嗎?
我正在嘗試使用它將所有打開的表連接到一個表中,並關閉所有打開的表,只留下一個由所有表連接的最終表。
當我運行 jsl 時,它有一個錯誤,可以重新生成多個“最終”表,而不是連接到 1 個單個表中。
不清楚錯誤來自哪裡。
謝謝
Clear Globals();
// Create your Tables list
Tables = {};
For( i = 1, i <= N Table(), i++,
Insert Into( Tables, Data Table( i ) << get name )
);
// Run the concatinations
For( i = 1, i < N Items( Tables ), i++,
ConcTable = Data Table( Tables[i] ) << Concatenate(
Data Table( Tables[i + 1] ),
Create source column,
Output Table Name( "final" )
);
Close( Data Table( Tables[i] ), No Save );
);
腳本Re: [JSL bug] 將所有打開的表連接成一張表並關閉所有非常感謝!這就是我要找的Re: [JSL bug] 將所有打開的表連接成一張表並關閉所有這太好了,謝謝吉姆。
Re: [JSL bug] 將所有打開的表連接成一張表並關閉所有哎呀,對不起,吉姆, @txnelson ,我沒有看到你的回复。
Re: [JSL bug] 將所有打開的表連接成一張表並關閉所有@斯托克斯,
您發布的腳本正在創建一堆新表。社區註釋:我不知道是否有關閉數據表列表的語法,因此,For 循環用於一次關閉一個源表,按名稱而不是編號。
Names Default to Here(1);
//Careful, this closes all data tables
close all(Data Tables);
//now create similar looking tables
dt = Open("$Sample_Data/Big Class.jmp");
dt << Subset( By (:age));
//close Big Class, keep all the age subset tables open
close(dt,NoSave);
// Create your Tables list
nt = N Table();
Tables = {};
For( i = 1, i <= nt, i++,
Insert Into( Tables, Eval Expr( Data Table( Expr( Data Table( i ) << get name ) ) ) )
);
final = Concatenate( Tables, Create Source Column, Output Table Name( "Big Class Redux" ) );
//close all in the list
For( i = 1, i <= nt, i++,
Eval( Eval Expr( Close( Expr( Tables[i] ), NoSave ) ) )
);
Re: [JSL bug] 將所有打開的表連接成 1 個表並關閉所有做你想做的,如果你不想要源表列,很簡單
Names Default To Here( 1 );
Clear Globals();
// Create your Tables list
Tables = {};
For( i = 1, i <= N Table(), i++,
Insert Into( Tables, Data Table( i ) << get name );
);
new Table("all data");
// Run the concatinations
For( i = 1, i <= N Items( Tables ), i++,
Data Table( "all data" ) << Concatenate(
Data Table( Tables[i] ),
append to first table(1)
);
Close( Data Table( Tables[i] ), No Save );
);
如果你想要一個源表,它會變得更加複雜。使用“創建源列”的內置選項,將為您執行的每個連接生成一個新的源表列。所以需要做一些調整。下面是一個工作腳本,應該給你你想要的
Names Default To Here( 1 );
Clear Globals();
// Create your Tables list
Tables = {};
TablesN = {};
For( i = 1, i <= N Table(), i++,
Insert Into( Tables, Data Table( i ) << get name );
for(k=1,k<=n rows(data table(i)),k++, insert into(TablesN,data table( i ) << get name));
);
new Table("all data");
// Run the concatinations
For( i = 1, i <= N Items( Tables ), i++,
Data Table( "all data" ) << Concatenate(
Data Table( Tables[i] ),
append to first table(1)
);
Close( Data Table( Tables[i] ), No Save );
);
data table( "all data" ) << add multiple columns("Source Table", 1, before first, character );
:Source Table << set values( TablesN );