根據條件加入存儲在本地文件夾中的兩個JMP表?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我對JMP比較新,還在探索..
我的本地文件夾中有兩個jmp文件,用於保存醫院患者ID及其訪問日期信息。一個jmp文件包含門診訪問數據和另一個文件住院訪問數據,兩者均為2010年至2015年期間。
我想比較並加入兩個jmp文件,以便聯接為我提供了一個患者的子集,其門診訪問日期小於等於住院訪問日期的14天(標準)
我正在使用JMP 12.0並且“表”菜單下的“加入”不允許我在兩個表中的列之間構造條件。
我該怎麼辦?我必須寫一個SQL嗎?如果是這樣,我應該在哪里和哪裡編寫可以比較兩個jmp表並加入它們以獲得答案的SQL?
謝謝你的幫助。
問候,
維諾德
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?嗨伊恩,
我發現我的住院病人表中有兩列可能是延遲整個腳本處理,或者只是卡住了無法繼續。其中一個是Age,我可以在之前的圖像中看到它在每個處理實例中用於顯示“評估年齡”並進入旋轉旋轉。現在Age和另一列都是公式列,當我硬編碼值並刪除公式時,卡住了。為什麼?
現在腳本可以運行並在3小時內打開一個120k唯一的PID表。這是一個64位8GB的RAM i7核心處理器機器,只運行標準的基於Windows的桌面進程,腳本是唯一的重型加載器。
感謝和問候,
Vinod Subramanian
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?是的,我理解它可能是與資源相關的性能問題並且超出了範圍。在這種情況下你可以忽略並關閉這個線程。
感謝您協助找出有效的腳本。如果我可以將它用於整個大型數據集的成功結果,本來會很好。但如果沒有其他工作原因,將通過批量運行腳本來決定妥協。
僅僅在一個FYI上,因為您問過......唯一的患者ID約為500,000。
每次我開始在大數據表上運行腳本時,它們都會打開,然後我會看到“評估年齡”(在瀏覽器窗口的底部面板上),看到嵌入式圖像。它與旋轉箭頭保持一致,就好像處理正在進行中,但“評估年齡”狀態永遠不會改變。我的表中有一個Age列,但為什麼它會停在那裡,打敗我?昨天我讓腳本連續運行了20個小時然後就把它殺掉了..

Re:根據條件加入存儲在本地文件夾中的兩個JMP表?在線程的頂部,我說“只要你沒有資源”。。。
我確實認為數百萬行是雄心勃勃的。正如我所提到的,我寫的代碼在任何意義上都不是“最好的”。雖然它可能會進一步優化,但我仍然不確定您提到的數據大小是否可行。這不是對JMP本身的評論,而是對任何桌面軟件的合理性的更多評論。
我可以深入挖掘一下,但是為了幫助我,知道你提到的兩個大表中有多少不同的患者ID會很好。從我編寫代碼的方式來看,我知道這將是確定其成功完成的因素之一。
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?你好伊恩 ,我在一個較小的數據集上處理腳本,每個表大約有100條記錄,輸出是預期的。謝謝。我在上面的鏈中標記了正確的答案。
我現在面臨的挑戰是在我擁有的更大的數據集(200萬條記錄)上運行腳本。
另外,您能否幫助我完成前面提到的方案2的腳本。謝謝。如果您希望我將此作為另一個查詢進行記錄,我可以這樣做。
非常感謝您的幫助。
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?嗨,伊恩,早上好。
我開始對我擁有的文件執行腳本。桌子很大.. 門診約200萬行,住院病人佔100萬.. 腳本一直在運行..我讓它運行了12個小時,並在幾分鐘後將其殺死。
我將首先嘗試在較小的數據集上運行它,看看它是如何響應的。
你能注意到腳本中的任何其他問題嗎?我刪除了一些代碼,更改為調用表並重命名表中存在的列名。
問候,
維諾德
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?好。聽起來你很近。可能還有其他問題,但在您的代碼中,第2行和第3行應該是:
DTI = 數據表 ( “ANE_2010-2015” ) ;
DTO = 數據表 ( “綜合-SOC-2011-2015” ) ;
因為這是在JSL中引用表的方法。
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?早安,謝謝你伊恩。我運行了jsl文件,輸出工作正常..
我試圖修改jsl以應用於我擁有的兩個jmp表。我似乎在腳本中做錯了,因為在運行腳本時沒有任何反應,也沒有收到任何錯誤消息,我附加了編輯過的jsl以供您進行驗證和指導。
對於方案2,上面的腳本適用於scenario1 我之前概述了住院病人和門診病人的jmp表連接成一個集成的jmp表,腳本應該如何改變?為了區分哪些數據行是住院病人,哪些是門診病人,我在每列數據中引入了一個標有“OP”和“IP”標誌的列。住院病人和門診病人表的患者ID和訪問數據在集成的jmp表中的患者ID和訪問日期列中連接。
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?只是為了幫助您更容易地看到它,我編寫代碼來實現我在上面描述的邏輯。保存附件,在JMP中打開它並執行“編輯>運行腳本”。它(隨機)使表格“住院病人”和“門診病人”(上面附有例子),但隨後將欄目添加到“門診病人”。不要擔心代碼,只需看看這兩個表,看看你是否正在尋找它。
(順便說一句,我並不認為代碼在任何意義上都是“最好的”,尤其是因為正如線程所示,我不確定我是否有清楚的要求)。
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?謝謝伊恩 。從你所寫的內容來看,我認為你做對了...在嘗試你發給我的文件後,給我24小時回复你。
在商業環境中,我試圖找到在住院病人訪問後14天內來門診就診的患者病例。在未來,我只需要根據業務需求調整天數(差距)以獲得所需的結果集。
你的一句話“我覺得你不期望多次匹配,所以我不確定你是否願意考慮這種可能性。”,
每個門診病人或住院病人的就診都是一個單獨的病例和表格中的一個單獨的行......患者可能在同一天有兩個門診病人預約,可能有相同或不同的專科。如果這是您多次匹配的意思,那麼當您循環患者的每個住院病人訪問日期時,這是可能的。
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?好。我編寫了一些我認為類似於你必須提交的數據。保存附件,打開表格並在每個表格中運行保存的腳本。
為了檢查我的理解,你想循環“Outpatient”中的行,如下所示:
1 /。第一行是'ID = 1'和'Out Date = 20Jan2014 01:28:05'。
2 /。在'住院病人'中查找任何行,其中'ID = 1'和'In Date'比20Jan2014 01:28:05早14天。我有一種感覺,你不期望多次匹配,所以我不確定你是否想要允許這種可能性。但是如果匹配,則需要向“Outpatient”添加一個新列,其中包含當前行中的“In Date”值(在本例中為第1行)。
3 /。轉到''中的下一行門診病人 '並重複直到表的結尾。
請問這是對的嗎?
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?嗨,伊恩 ,
我之前沒有提到我的非編碼背景,所以當你給我發送回复時完全理解你。謝謝。
我按你說的試過.. 這是我得到的輸出

我對桌子的觀察
- 進出桌內的每位患者只有一次訪問時間戳和
- 兩個表中的所有患者(進出)
根據我在第一個回復之上添加的方案詳細信息...嘗試在下面明確說明......
一個。您將從每個患者所提供的情景表和數據結構中註意到表1中的多次訪問(門診病人)和同一患者可能有多次訪問,或者可能在表2(住院病人)中甚至沒有一次訪問。
灣 患者的每個住院患者訪問日期的需要小於該患者的任何門診訪問日期 (請注意,患者的每個住院患者就診日期必須與同一患者的每個門診就診日期進行比較)
C。對於符合條件b的門診患者行,應用其標準住院患者就診日期<=同一患者門診就診日期的14天 (可能早先錯誤地說過相反的情況。抱歉)
d。只要滿足標準c,就行門診表需要將該患者標記為1(是)
即 需要在中添加新列門診表在標準符合標誌列之後捕獲住院病人的訪問日期(符合標準)
F。如果沒有滿足任何住院患者就診日期標準b和c的門診排,則在Outpatient表中標記0。
希望我足夠清楚。
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?對不起 - 我們經常使用代碼快速回答問題,但要明確,您當然不需要使用它來使用JMP。
但是,要查看我是否在正確的軌道上,請選擇上面的代碼並將其複制(到剪貼板)。然後執行“新建>新腳本”並將其粘貼到生成的窗口中。然後執行'編輯>運行腳本'。在短暫的延遲之後,這應該製作三個表,稱為“In”,“Out”和“In and Out Dates”。您可以通過在前兩個上使用“Tables> Join”獲得第三個,並通過匹配列進行連接。如果您需要有關如何執行此操作的更多幫助,請參閱: http://www.jmp.com/support/help/Join_Data_Tables.shtml 。在第三個表格中,雙擊“Criterion Met?”的列標題。這是一個JMP公式列(定義了'Value Order'屬性): http://www.jmp.com/support/help/Create_a_Formula_Column.shtml 。
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?你好伊恩 ,首先要感謝您的回復和幫助。
作為JMP的新手,也是一個非編程員,更多的商人,我需要更多的外行和逐步指導。我想採用交互式方法,因為它可能是最舒適的並且可以實現更快的分辨率。
但在此之前,我想詳細說明我的需求......為此目的,我已經在兩個表中說明了數據的虛擬快照,並列出了兩個場景。後面是第三個相關的基於執行的說明。很抱歉這個冗長的回复,但我認為有必要能夠幫助提供適當的指導。再次感謝您的耐心和時間。
1。場景1
門診JMP表1
僅顯示相關欄目)
年患者ID訪問日期..... ........ ...... ........
2010 1 03/20/2010
2010 1 05/15/2010
2011 1 01/19/2011
2011 1 08/04/2011
。
。
2010 2 06/18/2010
2010 2 07/12/2010
2010 2 08/1/2010
。
。
對於n個患者來說等等。可以在5年內只有一次門診就診的患者。
住院JMP表2
僅相關欄目)
年患者ID訪問日期 ..... ........ ...... ........
2010 1 01/08/2010
2010 1 06/10/2010
2010 1 10/19/2010
2011 1 07/15/2011
。
。
2010 3 04/12/2010
2010 3 09/20/2010
2010 3 12/10/2010
。
對於n個患者來說等等。可能有一個患者在5年內只進行一次住院治療。此表中沒有患者2的數據......
我需要的是表格和數據結構每個病人在門診表我想比較一下該患者的門診訪視日期和住院訪問日期並創建一個記錄受影響的門診病人行的子集表 (該已識別行的所有門診表列) 只要滿足以下條件: 門診就診日期<= 14天,從住院病人就診日期開始 (注意住院患者就診日期應在檢查標準前的門診就診日期之前) 。此門診病人行還應包括如此創建的子集表中的住院病人訪問日期列。
2。情景2。
我還有一個連接表,通過連接上面的住院病人和門診病人表和數據。在這 concat表 ,我介紹了一個專欄,以確定哪一行患者數據是住院患者,哪個門診病人,並保持相同的列名稱。在這種情況下,如何修改場景1中的公式以生成子集表?
3。 對於在場景1和2中構造的公式,我應該在JMP中應用/運行公式以獲得子集表嗎?
Re:根據條件加入存儲在本地文件夾中的兩個JMP表?鑑於您的起點似乎是兩個JMP表,並且只要您不缺資源,您也可以在JMP中加入和應用您的標準。請參閱下面的代碼,但請注意'DateDifference()'函數中參數的順序!如果你想以交互方式工作,只需看看“Criterion Met”中的公式。列並為您的案例構建類似的列。
NamesDefaultToHere ( 1 ) ;
//製作一些模擬的'日期'數據
NR = 100 ;
DT1 = newtable的 ( “在” ,
NewColumn ( “ID” ,數字 ,公稱 ,值 (( 1 :: NR ) ` )) ,
NewColumn ( “在日期” ,數字 ,連續 ,
式 ( RandomInteger ( DateDMY ( 1 , 1 , 2014 ) , DateDMY ( 31 , 12 , 2014 ))) ,
格式 ( “ddMonyyyy h:m:s” , 22 , 0 ) ,
輸入格式 ( “ddMonyyyy h:m:s” , 0 ) ,
)
) ;
inVals = 柱 ( DT1 , “在日期” ) << 的GetValues ;
dayDelay = Ĵ ( NR , 1 ,回合 ( RandomNormal ( 14 , 7 ) , 0 )) ;
dayDelay [ 祿 ( dayDelay <= 0 )] = 0 ;
outVals = inVals + InDays ( dayDelay ) ;
DT2 = newtable的 ( “內外兼修” ,
NewColumn ( “ID” ,數字 ,公稱 ,值 (( 1 :: NR ) ` )) ,
NewColumn ( “出日期” ,數字 ,連續 ,
值 ( outVals ) ,
格式 ( “ddMonyyyy h:m:s” , 22 , 0 ) ,
輸入格式 ( “ddMonyyyy h:m:s” , 0 ) ,
)
) ;
//加入dt1和dt2
等待 ( 3 ) ;
DT3 = DT2 << 加入 (
同 ( DT1 ) ,
SelectWith ( : ID , : 在日期 ) ,
選擇 ( : 出日期 ) ,
通過匹配列 ( : ID = : ID ) ,
丟棄倍數 ( 0 , 0 ) ,
包括不匹配 ( 0 , 0 ) ,
保留主表順序 ( 1 ) ,
輸出表 ( “進出日期” )
) ;
//添加一列以指示是否滿足了貶值
DT3 << 新欄目 ( “標準遇到了什麼?” ,
數字 ,
“標稱” ,
格式 ( “最好” , 12 ) ,
式 ( 如果 ( DateDifference ( : 在日期 , : 出日期 , “天” ) <= 14 , 1 , 0 ) ) ,
價值標籤 ( { 0 = “沒有” , 1 = “是” } ) ,
設置選中
) ;