如何通過 JSL 命名表並稍後在腳本中引用它?您好,我正在嘗試從大數據表中選擇一小部分數據,並從中創建一個臨時表。 總體目標是總結子集數據。 下面的腳本正在創建子集數據表“Name”,但它沒有返回對它的引用以供我處理新表。 在下面的腳本中,匯總了測試數據表的數據,但沒有匯總名稱數據表的數據。
請幫我解決一下。
dt=Open("Test.jmp");
Z= NRow();
k=dt<< Get Rows Where(:Para == "THK" );
pt = dt << Subset(
Rows(k),
Output Table Name("Name"),
);
// I want to summarize the data from this subset data table
Close (dt, No Save);
pt = Current Data Table ();
Summarize(
a=by(:Para, Route),
//b= by(:Route),
c= count,
meanHT = mean(SITE_VALUE),
stdevHT = stddev(SITE_VALUE)
);
show (a,c);
回复:參考輸出表名稱第一個是疑問句,第二個是陳述句。
使用數據表獲取對其的引用,然後重新使用它來發送消息時,通常非常有效。 第一種用法是調用函數來獲取該引用並將其存儲在變量中以供將來參考。
當前數據表很方便,因為如果未明確指定,JMP 中的大多數操作都會默認使用該表。 第二種用法分配一個表引用以使其成為當前數據表。 想像一下,您打開了幾張表,並且想要將一張表切換為當前表。
JSL 中的這一規定是風格問題。 一種風格是否比另一種風格更有利還取決於用例。
回复:參考輸出表名稱
pt = current data table();
會得到當前數據表
current data table(pk);
將設置當前數據表
回复:參考輸出表名稱有什麼區別
pt = current data table();
和
current data table(pk);
?
回复:參考輸出表名稱我可能遺漏了一些東西,但從最初的問題來看,所提出的問題似乎是需要能夠引用匯總函數的子集數據表。在 JMP 12 中,summary 函數還有一個可用的附加參數。您可以添加數據表作為第一個參數。因此,您需要做的就是將匯總語句更改為:
Summarize(pt,
a=by(:Para, Route),
//b= by(:Route),
c= count,
meanHT = mean(SITE_VALUE),
stdevHT = stddev(SITE_VALUE)
);
另一個觀察結果是您使用了以下聲明:
pt = current data table();
我相信您真正想做的是將當前數據表設置為 pk,方法是使用:
current data table(pk);
或者我完全被誤導了?
回复:參考輸出表名稱如果您使用“Close()”的“保存”選項,則需要告訴 JMP 將文件放在哪裡:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(3);
Close(dt, Save("$DESKTOP/"||(dt << getName)));回复:參考輸出表名稱<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />謝謝。 似乎解決了我原來的問題。 。
事實上,我原來的腳本似乎也可以工作,只是不允許我輕鬆處理數據表對象。 就像在本例中(使用您的腳本)一樣,我無法保存子集表。 有什麼建議麼?? 提前致謝
關閉(dtSub,保存);
拋出錯誤......
輸入/輸出問題。 無法以讀寫模式打開。
該系統找不到指定的文件。
保存對 JMP 數據表女性的更改嗎?
回复:參考輸出表名稱在這種情況下,也許 JSL 相當於“表 > 摘要”更好?
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
rows2get = dt << getRowsWhere(:sex == "F");
dtSub = dt << Subset(Rows(rows2get), Output Table("Females"));
dtSummary = dtSub << Summary(Mean(:Weight), Group(:age));