連接表並關閉輸入文件我正在尋找一種方法來關閉打開並已用於輸入的表
For( f2 = 1, f2 < N 項( 表格 ), f2++,
ConcTable = 表[f2] << /*###*/Concatenate(
表[f2 + 1],
輸出表名稱(“兩者”)
) /*###*/;
關閉(文件列表[f2],不保存);
);
日誌中的答案是:
Send 在訪問或評估 'Send' 時需要可編寫腳本的對象,Tables[f2] << /*###*/Concatenate( Tables[f2 + 1], Output Table Name( "Both" ) ) /*###* /
回复:連接表並關閉輸入文件
@rc_hertzy寫道:
很好的解決方案。 首先,一個拼寫錯誤(等號不是減號):第四行應該是
dt=數據表(1);
現在,我如何為源保留一欄? 如果我只是添加
創建源列
在 Concatenate 語句中,我得到連續的源列,但沒有一個是我想要的 - 列出所有源文件。
相關:當我手動連接文件並將源腳本從輸出文件複製到腳本窗口時,它不會運行,出現找不到列出的文件名的錯誤。 這是腳本( File1.jmp 是選定的打開文件):
dt = 當前數據表();
dt <<連接(
數據表( “文件2.jmp” ),
數據表( “文件3.jmp” ),
輸出表( “組合測試.jmp” ),
創建源列
);
謝謝。 -瑞克
我在最後一部分發現了我的錯誤。 我已經重命名了一個數據文件,因此腳本當然無法找到它。
我仍然想要一種修改您的解決方案以添加源列的方法,這樣我就不需要顯式列出所有打開的文件。 謝謝。
回复:連接表並關閉輸入文件很好的解決方案。 首先,一個拼寫錯誤(等號不是減號):第四行應該是
dt=數據表(1);
現在,我如何為源保留一欄? 如果我只是添加
創建源列
在 Concatenate 語句中,我得到連續的源列,但沒有一個是我想要的 - 列出所有源文件。
相關:當我手動連接文件並將源腳本從輸出文件複製到腳本窗口時,它不會運行,出現找不到列出的文件名的錯誤。 這是腳本( File1.jmp 是選定的打開文件):
dt = 當前數據表();
dt <<連接(
數據表( “文件2.jmp” ),
數據表( “文件3.jmp” ),
輸出表( “組合測試.jmp” ),
創建源列
);
謝謝。 -瑞克
回复:連接表並關閉輸入文件這是連接表格並關閉不需要的表格的簡單方法
Names Default To Here( 1 );
Final_Table="Data_" || char(ntable);
// Concatenate the tables and delete them. Add all of the tables to the first table
dt-data table(1);
For( i = 2, i <= N Table(), i++,
dt << concatenate(data table(i), append to first table(1));
close(data table(i), nosave);
);
// Rename the table to the desired name
dt << set name(Final_Table);
回复:連接表並關閉輸入文件吉姆,
如果您查看附加的兩個表,它們具有相同的列數和列名稱。 兩者唯一的區別是行數。 第 1 列是時間戳,根據此重複項將被刪除。
按照腳本編寫的方法有效。 我正在尋找一種有效的方法來保存決賽桌並關閉已作為決賽輸入的表格。
此致,
基督教
回复:連接表並關閉輸入文件您能否提供數據表的示例,以及什麼被視為重複行的說明?
回复:連接表並關閉輸入文件吉姆,謝謝你的回答。 讓我進一步擴展一下。 目標是連接數據表列表並刪除雙行。 任何對最終串聯表有貢獻的數據表都將被關閉。 輸入數據表的數量是可變的。 待拼接數據表的選擇遵循起始字符串相等且拼接數據表最終名稱相同的規則。
現在是連接和雙行刪除以及保存最終表的代碼。
如果(N 項(文件列表)>0,
對於 (nu_t = 1, nu_t <= num_tables, nu_t++,
FinalTable = Munger(文件列表[1],6,4);
Final_Table = "Data_"||FinalTable||".jmp";
//顯示(最終表);
對於 (f2 = 1, f2 < nitems(表), f2++,
ConcTable = Tables[f2] << Concatenate(Tables[f2+1], 輸出表名稱( "Both" ) );
關閉(表[f2],不保存);
);
// 刪除 Doube 行
ConcTable = 當前數據表();
col_min = Parse( "Col Min( Row(), :Name(\!"" || Concat Items( ConcTable << 獲取列名( string ), "\!"), :Name(\!"" ) || “\!”))“);
重複項 = [];
對於每一行( If( col_min != Row(), 重複項 |/= Row() ) );
ConcTable << 刪除行(重複項);
ConcTable << 保存(Path_datatable_out ||Final_Table);
//For(cc=1,cc <= nitems(Tables),cc++, Close(Tables[cc], 不保存));
);
); // 如果條件
我期待您的回复。
基督教
回复:連接表並關閉輸入文件這是一段可以工作的代碼,並且遵循您指定的邏輯。 但是,我不明白你為什麼要這樣做......所以也許結果不會是你想像的。 如果沒有,請回复最終結果。
Names Default To Here( 1 );
// Create sample tables
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt << subset( selected rows( 0 ), selected columns( 0 ), by( :age ) );
Close( dt, nosave );
// Create your Tables list
Tables = {};
For( i = 1, i <= N Table(), i++,
Insert Into( Tables, Data Table( i ) << get name )
);
// Run the concatinations
For( f2 = 1, f2 < N Items( Tables ), f2++,
ConcTable = Data Table( Tables[f2] ) << Concatenate( Data Table( Tables[f2 + 1] ), Output Table Name( "Both" ) );
Close( Data Table( Tables[f2] ), No Save );
);