基準に基づいてローカルフォルダに保存されている2つのJMPテーブルを結合しますか?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは皆さん、
私はJMPには比較的初心者ですが、まだ検討中です。
私は自分のローカルフォルダに2つのjmpファイルを持っていて、それは病院の患者IDと彼らの訪問日情報を列に保持しています。1つのjmpファイルには、2010年から2015年までの期間の外来患者来院データと別の入院患者来院データが含まれています。
2つのjmpファイルを比較して結合して、外来患者の訪問日が入院患者の訪問日から14日以内である患者のサブセットが結合されるようにします(基準)
JMP 12.0を使用していますが、[テーブル]メニューの[結合]を使用しても、2つのテーブルの列の間に基準を作成できません。
どうやって行けばいいの?SQLを書く必要がありますか?もしそうなら、2つのjmpテーブルを比較し、それらを結合して答えを導き出すことができるSQLをどこでどこで書くべきですか?
助けてくれてありがとう。
よろしく、
Vinod
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?こんにちはイアン、
私は入院患者のテーブルに2つの列があり、それがおそらくスクリプト処理全体を遅らせるか、単に動けなくなって動けなくなることを発見しました。1つは私の以前の画像で見ることができるようにそれが「評価年齢」を示し、回転の回転に入るのが常であったとき年齢であった。Ageと他の列は式の列です。値をハードコードして式を削除すると、動けなくなりました。なぜでしょうか。
これでスクリプトは実行され、3時間で120kの一意のPIDテーブルを開くことができました。これは64ビット8GB RAM i7コアプロセッサマシンで、標準のWindowsベースのデスクトッププロセスのみが実行されており、スクリプトが唯一のヘビーローダーでした。
ありがとうございます。それでは、お元気で、
Vinod Subramanian
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?はい、私はそれがおそらくリソースに関連していて範囲外のパフォーマンス上の問題であることを理解しています。その場合は無視してこのスレッドを閉じることができます。
うまく機能するスクリプトの作成を支援していただきありがとうございます。私がそれを大規模なデータセット全体に渡って成功する結果に使うことができたらよかったでしょう。他に何も機能しない場合でも、データのバッチでスクリプトを実行することによって妥協点を決定します。
あなたが尋ねたのでちょうどFYIで、..ユニークな患者IDは約50万です。
大きなデータテーブルに対してスクリプトを実行するたびに、それらが開き、ブラウザウィンドウの下部パネルにある "Evaluating Age"が表示されます。埋め込まれた画像を参照してください。処理は進行中ですが、「年齢の評価」ステータスは変わりません。テーブルにAge列がありますが、なぜそこで止まるのですか。昨日私はスクリプトを20時間連続して実行し続け、それからそれを殺しました..

再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?スレッドの冒頭で、私は「あなたがリソースが不足していない限りは」と言いました。。。
私は何百万もの行が野心的だと思います。先にも述べたように、私が書いたコードはいかなる意味においても「最善」ではありません。それはさらに最適化されるかもしれませんが、私はまだあなたが言及するデータサイズが実行可能であると確信していません。これは実際にはJMP自体に対するコメントではありませんが、デスクトップソフトウェアにとって合理的なものについての詳細です。
私はもう少し深く掘り下げることができるかもしれません、しかし私を助けるためにあなたが言及する2つの大きなテーブルにいくつの異なる患者IDがあるか知ることは良いでしょう。私がコードを書いた方法から、私はこれがその成功した完成を決定することにおける要因の1つになるであろうということを知っています。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?こんにちはイアン 、各テーブルにつき100レコード程度の小さなデータセットでスクリプトを実行しましたが、出力は予想どおりです。ありがとうございました。私は上記の連鎖の中で正しい答えをマークしました。
私が今直面している課題は、私が持っているより大きなデータセット(200万レコード)に対してスクリプトを実行することです。
また、私が先に述べたシナリオ2のスクリプトについて私に手伝ってもらえますか。ありがとうございました。あなたが私にこれを別の質問として記録して欲しいならば、私はそうすることができます。
助けてくれてありがとう。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?こんにちはイアン、おはようございます。
私は自分が持っているファイルに対してスクリプトを実行し始めました。テーブルは巨大です。約200万行の外来患者と100万人の入院患者がいます。スクリプトは走り続けました。私はそれを12時間走らせ続け、そして数分前にそれを殺しました。
最初に小さいデータセットで実行してみて、どのように応答するかを確認します。
スクリプト内の他の問題に気づくことができますか?私はあなたのコードのいくつかを削除し、テーブルを呼び出すように変更し、またテーブルに存在するカラム名を変更しました。
よろしく、
Vinod
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?OK。あなたはそのとき近くにいるように聞こえます。他にも問題があるかもしれませんが、あなたのコードでは、2行目と3行目は次のようになるはずです。
dti = データ表 ( "ANE_2010-2015" ) ;
dto = データ表 ( "連結 - SOC-2011-2015" ) ;
これがJSLでテーブルを参照する方法です。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?おはようございますとありがとうイアン。私はjslファイルを走らせました、そして、出力は正しく働きます..
私は私が持っていた2つのjmpテーブルに適用するためにjslを修正しようとしました。実行中のスクリプトでは何も起こらず、エラーメッセージも表示されないので、スクリプトで何か問題があるようです。編集したjslを確認のために添付しています。
上記のスクリプトは、シナリオ1、シナリオ2に対して機能します。入院患者と外来患者のjmpテーブルが1つの統合されたjmpテーブルに連結されているところで、前に概説しましたが、スクリプトはどのように変更すればよいですか。どのデータ行が入院患者で、どの行が外来患者であるかを区別するために、データの各行に対してフラグ "OP"と "IP"を使用して列を導入しました。入院患者テーブルと外来患者テーブルの両方の患者IDと訪問データが、統合されたjmpテーブル内の患者IDと訪問日の列に連結されました。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?あなたがそれをもう少し簡単に見るのを助けるために、私はすぐ上で説明した論理を実行するためのコードを書きました。添付ファイルを保存してJMPで開き、[編集]> [スクリプトの実行]を実行します。これは(ランダムに)テーブルを 'Inpatient'と 'Outpatient'にします(その例は上記に添付されています)が、その後 'Outpatient'に列を追加します。コードを気にする必要はありません。2つのテーブルを見て、それがあなたが探しているものかどうかを確認してください。
(ところで、私は、コードがいかなる意味でも「最善」であると主張するわけではありません。特に、スレッドが示すように、要件が明確かどうかわからないからです)。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?ありがとうございましたイアン 。あなたが書いたものから、私はあなたがそれを正しくしたと思います...あなたが私に送ったファイルを試みた後あなたに戻って戻るために私に24時間を与えてください。
参考までに、ビジネスの観点から、私は入院患者の訪問から14日以内に外来患者の訪問を受けた患者の症例を見つけようとしています。将来的には、ビジネス需要に基づいて必要な結果セットを取得するために日数(ギャップ)を微調整する必要があります。
あなたの発言の1つは、"私はあなたが複数の一致を期待していないという意味を持っているので、あなたがその可能性を考慮したいのかどうか私にはわかりません。"、
すべての外来または入院は、表の別々の症例および別々の行です。同じ患者が同じ日に2つの外来予約をする可能性があります。それがあなたが複数の一致によって意味するものであるならば、それはあなたが患者の各入院患者訪問日をループするときに可能です。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?OK。私はあなたが手にしなければならないものと似ていると思ういくつかのデータを作りました。添付ファイルを保存してテーブルを開き、保存したスクリプトをそれぞれ実行して確認します。
私の理解を確認するために、あなたは次のように 'Outpatient'の行をループしたいと思います。
1 /。最初の行は 'ID = 1'と 'Out Date = 20Jan2014 01:28です。05 '。
2 /。「ID = 1」および「In Date」が20Jan2014 01:28:05より14日以内である「Inpatient」内の任意の行を見つけます。私はあなたが複数の試合を期待していないという意味を持っているので、あなたがその可能性を考慮に入れたいのかどうかはわかりません。しかし、一致するものがある場合は、現在の行(この場合は1行目)に 'In Date'値を含む新しい列を 'Outpatient'に追加します。
3 /。'の次の行に移動する外来 'そして表の最後まで繰り返します。
これは正しいですか。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?こんにちはイアン 、
私はコーディング以外の背景については先に述べていませんでしたので、あなたが私に返事を送ったときあなたを完全に理解してください。ありがとうございました。
あなたが言ったように私は試してみました.. これが私が得る出力です。

テーブルの上にある観察
- 入力テーブルと出力テーブルの両方の各患者には訪問タイムスタンプが1つだけありますそして
- すべての患者が両方の表に入っている(内外)。
私があなたの最初の返信の上に追加したシナリオの詳細に従って... ...以下に明確にしようとしています...
a。提供されているシナリオ表とデータ構造から、各患者には表1(外来患者)と同じ患者を複数回訪問した場合、または表2(入院患者)を1回訪問しなかった場合もあります。
b。患者の入院日のそれぞれがその患者の外来通院日のいずれよりも短いことの必要性 (患者の各入院日は、同じ患者の各来院日と比較する必要があります)
c。基準bを満たす外来患者行については、次の基準を適用します。入院患者の訪問日は、同じ患者の外来患者の訪問日の14日以内 (誤って反対のことを先に述べた可能性があります。ごめんなさい)
d。基準cが次の行を満たすときはいつでも外来患者用テーブルその患者に対して1とフラグを立てる必要があります(はい)
e。新しい列をに追加する必要があります。外来患者用テーブル (基準が満たされた)入院患者の訪問日を取得するための、基準一致フラグ列の後
f。入院日の基準bとcのいずれかを満たす外来行がない場合は、外来テーブルのフラグに0を付けます。
私が十分にはっきりしていることを願っています。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?すみません - 私たちはよく質問に答えるためにコードを使用しますが、明確にするために、あなたは確かにJMPで動作するためにそれを使用する必要はありません。
私が正しい方向に進んでいるかどうかを確認するには、上記のコードを選択して(クリップボードに)コピーしてください。それから 'New> New Script'を実行して結果のウィンドウに貼り付けてください。それから「編集>スクリプトの実行」を実行します。少し遅れて、これは 'In'、'Out'と 'In and Out Dates'と呼ばれる3つのテーブルを作るはずです。3つ目は、最初の2つのテーブル>結合を使用して、一致する列を結合することで取得できます。これを行う方法についてさらに支援が必要な場合は、以下を参照してください。 http://www.jmp.com/support/help/Join_Data_Tables.shtml 。3番目の表で、「Criterion Met?」の列見出しをダブルクリックします。これはJMP式列です( 'Value Order'プロパティが定義されています)。 http://www.jmp.com/support/help/Create_a_Formula_Column.shtml 。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?こんにちはイアン 、最初にあなたの返事と延長手助けに感謝します。
JMPの初心者であり、また非コーダーで、よりビジネスマンである私には、もう少し素人で段階的なガイダンスが必要です。私は最も快適でより速い解決を可能にすることができるように私は対話型アプローチで行きたいです。
しかしその前に、私はあなたに私の必要性の詳細な明快さを与えたいと思います...私は目的のために2つのテーブルのデータのダミースナップショットを示し、2つのシナリオをリストしました。この長い返事で申し訳ありませんが、適切なガイダンスを提供できるようにすることが必要だと思います。あなたの忍耐と時間をもう一度ありがとう。
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年間でたった1回の外来診療で患者がいる可能性があります。
入院患者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年に1回の入院患者訪問しかない患者もいます。この表には患者2のデータはありません...
私が必要としているのは、テーブルとデータ構造です。各患者に外来患者用テーブル比較したいと思いますその患者の外来通院日および入院通院日そして、影響を受ける外来患者の行を記録するサブセットテーブルを作成します。 (その識別された行のすべての外来患者テーブル列) 以下の基準が満たされるときはいつでも: 外来受診日は入院通院日から<= 14日です (注意:入院患者の訪問日は、基準がチェックされる前の外来患者の訪問日より前でなければなりません) 。この外来患者行には、そのように作成されたサブセットテーブルの入院患者訪問日列も含める必要があります。
2。シナリオ2
上記の入院患者テーブルと外来患者テーブルとデータを連結して作成した連結テーブルもあります。これで連結テーブル 、私は患者データのどの行が入院患者で、どの外来患者であるかを識別するために列を導入し、同じ列名を維持しました。そのようなシナリオでは、シナリオ1の式をサブセットテーブルを生成するためにどのように修正しますか。
3。 シナリオ1と2で作成された式については、サブセットテーブルを取得できるようにするには、JMP内で式を適用または実行する必要がありますか。
再:基準に基づいてローカルフォルダに格納されている2つのJMPテーブルを結合する?出発点が2つのJMPテーブルであるように見え、リソースが不足していない限り、JMPで結合と基準の適用を行うこともできます。以下のコードを見てください、しかし、'DateDifference()'関数の引数の順番に注意してください!対話的に作業したい場合は、"Criterion Met?"の公式を見てください。あなたのケースに合ったものをコラムして構築してください。
NamesDefaultToHere ( 1 ) ;
//シミュレートした「日付」データを作成します
番号 = 100 ;
dt1 = NewTable ( "に" 、
NewColumn ( 「ID」 、数値 、公称 、値 ((( 1 :: 番号 ) ` )) 、
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 = J ( 番号 、 1 、円形 ( ランダム正規 ( 14年 、 7 ) 、 0 )) ;
dayDelay [ Loc ( dayDelay <= 0 )] = 0 ;
outVals = inVals + イン日 ( dayDelay ) ;
dt2 = NewTable ( "でる" 、
NewColumn ( 「ID」 、数値 、公称 、値 ((( 1 :: 番号 ) ` )) 、
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 = "はい" } ) 、
選択セット
) ;