將數據表從open()存儲到列表中嗨,
我想使用open()關鍵字打開多個工作表並將這些數據表存儲到列表中。
Tables = {};
//normaly I would like to use a for loop here, however the number of worksheets will vary.
Tables = Open ("pathway",
invisible, info about the data..);
//do something with the tables
for (i = 1, i <= NITEMS(Tables), i++,
close(Tables[i], nosave);
);
附加問題:
也可以使用用戶名/密碼保護searchengine /庫來搜索和下載信息到jmp?
親切的問候
安德斯
Re:將數據表從open()存儲到列表中喜
是的,我的清單看起來像那樣。
我通過實現while循環(file = Tables)解決了這個問題。 當我有兩個循環引用同一個列表時,JMP無法找到我的參考資料。對我而言,似乎在循環之外聲明了Tables = Repeat(....),但是即使我在循環之外聲明Tables = {},我的第二個for循環仍然無法引用它。你知道這個的原因嗎?
f = N項(flist)
而 ( F > 0 ,
一世 = 1 ;
DT = 打開 (
我自己的路 || 的flist [ F ] ,
導入設置 (
行結束 ( CRLF , CR ,如果 ) ,
結束 ( 其他 ( “;” ) , CSV ( 0 ) ) ,
剝離行情 ( 1 ) ,
使用撇號作為引號 ( 0 ) ,
掃描整個文件 ( 1 ) ,
將空列視為數字 ( 0 ) ,
CompressNumericColumns ( 0 ) ,
CompressCharacterColumns ( 0 ) ,
CompressAllowListCheck ( 0 ) ,
標籤 ( 1 ) ,
列名稱開始 ( 1 ) ,
數據開始 ( 2 ) ,
要閱讀的行 ( “所有” ) ,
年度規則 ( “20XX” )
) ,
) ;
文件 [ 一世 ] = DT ;
一世 = 一世 + 1 ;
F - ;
....
);
Re:將數據表從open()存儲到列表中我用.csv文件嘗試了我的代碼並且它可以工作(適用於Mac的JMP 12.2)。它也適用於不可見的文件。
該表列表應該看起來像這樣:
節目 ( 表 )
/ *:
Tables = {DataTable(“Data 1”),DataTable(“Data 2”),DataTable(“Data 3”)};
確保csv在JMP中作為數據表正常打開(暫時關閉) 無形並且該表在之前的操作中尚未關閉。
Re:將數據表從open()存儲到列表中嗨,
我試圖將這段代碼包含在我的腳本的其他部分中,但是我不能得到dt = Tables [i]或dt = Data Table(Tables [i])來引用我在Table中的表。見下面的例子:
//我用你的代碼打開指定目錄中的所有文件,調試時我可以看到Tables包含對我的CSV文件的引用,所以這部分似乎正在工作
for(i = 1,i <= N ITEMS(Tables),i ++,
DT = 數據表 ( 表 [ 一世 ] ) ; // JMP無法找到Tables中任何表的引用。dt =表[i]也不起作用。
DT << 新欄目 ( “信號” ) ;
DT << 移動選定的列 ( { “信號” } ,首先 ) ;
: 信號 << 數據類型 ( 字符 ) ;
關口 = 柱 ( 1 ) ;
DT << 新欄目 ( “源表” ,字符 ) ;
: 來源表 << 設置每個值 ( DT << 得到名字 () ) ;
DT << 移動選定的列 ( { “源表” } ,首先 ) ;
Re:將數據表從open()存儲到列表中感謝您的快速答复。它是一個非常優雅的代碼,它完全解決了我的問題,謝謝你。Re:將數據表從open()存儲到列表中我認為這裡需要一個循環來構建列表。 該目錄中的文件() 如果文件數量不同,則函數很有用,並且它們都位於同一目錄中。
一個例子:
// Define path and file type
mypath = "path";
ftype = ".jmp";
// Make list of files, remove all non-matching files
flist = Files In Directory(mypath);
For(i = N Items(flist), i > 0, i--,
If(!Ends With(flist[i], ftype),
Remove From(flist, i)
)
);
// Open and create list of tables
Tables = Repeat(
i = 0;
{i++ ; Open(mypath || flist[i])};,
N Items(flist)
);
//do something with the tables
For(i = 1, i <= N Items(Tables), i++,
Close(Tables[i], No Save)
);