JMP類比SAS'大家好
我是一個老SAS頭(非常精通基礎編程......)。但... !
我想在JMP中做一個相當簡單的任務。所以它似乎......
基本上,我想打開CITIES.JMP並保留CO中缺少值的所有行(和字段),並可能將此子集保存在新的新的下,例如 CITIES_MISS.jmp。
基準當量是“缺少CO的地方;”
我只是無法解決它。即使我的查詢似乎有效,只要我打開子集,我仍然會找到所有數據行,有時只是標記。請幫助您獲取示例代碼,並解釋JMP和SAS邏輯之間的邏輯差異(如果有)。
謝謝你,親切的問候
新手
回复:JMP類比SAS'所需的JSL類似於:
NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Cities.jmp");
missingCORows = dt1 << getRowsWhere(IsMissing(:CO));
dt2 = dt1 << Subset(Rows(missingCORows));
dt2 << setName((dt << getName)||"_MISS");
嘗試“幫助>書籍>腳本指南”和“幫助>腳本索引”。我不會過多地考慮比較,而是從問題和一些與解決方案“接近”的工作代碼開始。經驗表明,您將在這裡得到很多幫助。
回复:JMP類比SAS'謝謝。現在我有了行。
昨天我花了大約四(!!)小時,甚至沒有達到目標
使用Scripting Guide,JSL語法參考,WWW的結果。
所以,如果我問你如何保留所有的話,請耐心等待
其他CTITIES字段,例如 CITY,SO2等 親切的問候。
回复:JMP類比SAS'我確定你正在尋找這個腳本版本,我會留給別人提供。 就個人而言,我能夠在沒有任何腳本的情況下完成我想要的95%,對我而言,這是JMP和SAS(或幾乎任何其他程序)之間的一個主要區別。 要做你想要的 - 沒有腳本 - 只需在行 - 行選擇下 - 選擇位置和高位列名稱CO並將其等於空白。 它將選擇您要查找的5行。 然後,在Tables下,單擊Subset,您將獲得所有列,只有那5行。
不幸的是,我認為JMP沒有辦法自動編寫我剛剛編寫的內容。 如果進行分析並轉到保存腳本,則會自動生成腳本。 但我認為沒有辦法讓JMP自動編寫腳本表操作。 我希望有 - 也許有一些我不知道的東西。
回复:JMP類比SAS'非常感謝您的直接評估
我的部分工作是評估JMP的優勢和限制,通過腳本作為業務需求來自動化流程。
如果JMP甚至無法處理大多數簡單的ETL過程,我們將不得不繼續使用JMP。
然而,這可能是一個遺憾,因為它的分析組合看起來很漂亮和花花公子。
回复:JMP類比SAS'當然,JMP可以通過腳本執行您想要的操作。 我只是指出你要求的東西可以在沒有你的情況下完成。 沒有腳本我做的任何事都有一個在後台執行的腳本。 你試圖讓JMP工作的4個小時是4個小時試圖弄清楚正確的腳本。 我花了5秒鐘完成沒有腳本的任務。 我明白了 - 你的工作是評估JMP,並且要求是編寫腳本。 那麼,滿足了這個要求。 如果您關注的是評估腳本語言,那麼您應該等待其他人做出回應 - 與其他語言相比,此論壇上有很多人可以使用JMP腳本。
回复:JMP類比SAS'也許我將我的請求改寫為JMP社區。你能推荐一個
特定的JMP論壇,我可以要求一個可能的JMP腳本方法?
回复:JMP類比SAS'當你說'當你說'時,我不知道你想要做什麼的範圍在哪裡我可以要求一個可能的JMP腳本方法 “。到底是什麼?
如上所述,這是一個獲得JMP所有東西支持的好地方,包括JSL。但是,正如這個主題可能表明的那樣,很難得到一個清晰的圖片 - 取決於問題是如何被提出的,答案可能會或可能不會立即有所幫助,並且可能會或可能不會假設比實際問題更多的背景和先驗知識具有。
並且,正如所述,“比較”對於編碼來說可能是困難的:對於軟件應用來說,它們更加困難。
如果有一個嚴肅的意圖,看看JMP如何滿足您對其他軟件(包括SAS)的需求,那麼我知道當地的JMP團隊非常樂意參與並幫助您解決這個問題。
回复:JMP類比SAS'非常感謝您的反饋。也許我讓自己不夠清楚。
因為我碰巧不僅僅是JMP的新手,所以我更傾向於指向
哪個JMP組或列表我可以發布關於如何過濾JMP的問題
通過“misisngs”條件將數據集轉換為子集。我現在意識到我是怎樣的
在我原來的帖子上寫下“主題”,這不僅僅是誤導。
不幸的是,我注意到它已經出來太晚了......
Re:與SAS類似的JMP:通過列中的缺失值過濾數據關閉,但....
//open data table
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
//select all rows of data table where column CO is missing
dt1 << Select Where( Is Missing( :CO ) );
//create a subset of data table with only selected rows, keeping all columns
dt1 << subset( selected rows( 1 ) );
//note that renaming and saving can be done in one step [DOESNT WORK: SAVED dataset still contains all (N=52) data rows instead of selected (N=5) rows]
dt2 << save( "V:/Process/.../Data/AnewDEMOname.jmp" );
我甚至嘗試了類似的變體
Close( dt2, save( "V:/Process/.../Data/AnewDEMOname.jmp" ) );
它只是不起作用。SAVED數據集仍然包含所有(N = 52)個數據行而不是所選(N = 5)行]。
這是JMP錯誤嗎?
我在Microsoft Windows 10 Enterprise 64位上使用JMP®14.0.0(64位)。
Re:與SAS類似的JMP:通過列中的缺失值過濾數據對不起,我好像錯過了dt2的作業。
它應該是:
//open data table
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
//select all rows of data table where column CO is missing
dt1 << Select Where( Is Missing( :CO ) );
//create a subset of data table with only selected rows, keeping all columns
//note the assignment of the result of the subset into the variable dt2
dt2 = dt1 << subset( selected rows( 1 ) );
//note that renaming and saving can be done in one step
dt2 << save( "V:/Process/.../Data/AnewDEMOname.jmp" );
我要糾正之前的帖子,所以後來讀這篇文章的人都不會感到困惑。
我很抱歉。請繼續告訴我們您的進度。
回复:JMP類比SAS'跟進 @ian_jmp 的回答,他是對的,這是地方詢問有關JMP的問題。
這裡的所有成員都樂意幫助您指明正確的方向。繼續提問,讓我們幫助你。
話雖如此,學習JSL的最好方法是學會以交互方式使用JMP。盡量不要根據你在SAS中的方式做出如何做事的假設。這兩個產品,JMP和SAS都是使用不同的使用模式構建的,因此它們的工作方式不同。
大多數腳本語言都基於使用相同的命令自動執行JMP,這些命令用於交互式地執行操作。例如,在您原來的問題中,您想知道:
基本上,我想打開CITIES.JMP並保留CO中缺少值的所有行(和字段),並可能將此子集保存在新的新的下,例如 CITIES_MISS.jmp。
以交互方式執行此操作的方法是打開CITIES.JMP,選擇缺少CO的所有行,然後使用Tables-> Subset創建新數據表。
因此,JSL遵循相同的模式:
//open data table
dt1 = Open("$SAMPLE_DATA/Cities.jmp");
//select all rows of data table where column CO is missing
dt1 << Select Where(is Missing(:CO));
//create a subset of data table with only selected rows, keeping all columns
dt2 = dt1 << subset(selected rows(1));
//note that renaming and saving can be done in one step
dt2 << save("A new name.jmp");
你說:
如果JMP甚至無法處理大多數簡單的ETL過程,我們將不得不繼續使用JMP。
然而,這可能是一個遺憾,因為它的分析組合看起來很漂亮和花花公子。
我想大多數人都會說JMP可以處理簡單(和復雜!)的ETL過程。所以,如果你無法弄清楚如何去做,那就問問吧。
這是一個列表學習JMP的最佳資源。
當您繼續探索JMP時,請告訴我們,我們將很樂意為您提供幫助。
[注意20May2019:上面的代碼已經更正,以顯示對dt2的賦值。最初這是偶然遺漏的。後來的帖子指出了這一點,並在此進行了更正。]
Re:與SAS類似的JMP:通過列中的缺失值過濾數據現在它起作用了。喜歡魅力。非常感謝。