기준에 따라 로컬 폴더에 저장된 두 개의 JMP 테이블을 결합 하시겠습니까?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />여러분 안녕하세요,
나는 비교적 새로운 JMP와 여전히 탐험 ..
내 로컬 폴더에 두 개의 jmp 파일이 있습니다.이 파일에는 병원 환자 ID와 방문 날짜 정보가 표시됩니다. 하나의 jmp 파일에는 외래 환자 방문 데이터와 다른 파일 입원 방문 데이터가 모두 포함되어 있습니다 (2010 년부터 2015 년까지).
나는 2 개의 jmp 파일을 비교하고 합류하여 외래 방문 날짜가 입원 환자 방문 날짜 (기준)에서 14 일보다 적은 환자의 하위 집합을 제공하도록하고 싶습니다.
JMP 12.0을 사용하고 있으며 테이블 메뉴의 "조인"을 통해 두 테이블의 열 사이에 기준을 구성 할 수 없습니다.
어떻게해야합니까? SQL을 작성해야합니까? 만약 그렇다면 무엇을 어디서 2 개의 jmp 테이블을 비교할 수 있고 그것들을 결합하여 답을 도출 할 수있는 SQL을 작성해야합니까?
어떤 도움을 주셔서 감사합니다.
문안 인사,
Vinod
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?안녕 이안,
내 입원 환자 테이블에 두 개의 열이 있는데 전체 스크립트 처리를 지연 시키거나 계속 진행할 수 없다는 것을 알았습니다. 하나는 나이였습니다. 이전의 이미지에서 "평가 중"이라는 것을 보여주고 회전 스핀을 사용하는 모든 처리 인스턴스에서 볼 수 있습니다. 이제 Age와 다른 열은 수식 열이며 값을 하드 코딩하고 수식을 제거하면 막히게되었습니다. 이유는 무엇입니까?
이제 스크립트는 3 시간 만에 120k 개의 고유 PID 테이블을 실행하고 열 수있었습니다. 이것은 64 비트 8GB RAM i7 코어 프로세서 시스템으로, 표준 Windows 기반 데스크톱 프로세스가 실행되며 스크립트는 유일한 무거운 로더였습니다.
감사 & 안부,
Vinod Subramanian
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?예, 아마도 성능 문제가 리소스 및 범위를 벗어난 것과 관련되어 있음을 이해합니다. 이 경우 무시하고이 스레드를 닫을 수 있습니다.
스크립트가 작동하는 것을 도와 주셔서 감사합니다. 큰 데이터 세트 전체에서 성공적인 결과를 얻을 수 있다면 좋았을 것입니다. 그러나 아무 것도 작동하지 않으면 데이터를 일괄 적으로 스크립트를 실행하여 절충안을 결정합니다.
FYI에, 당신이 물었습니다. 유일한 환자 ID는 약 50 만입니다.
대용량 데이터 테이블에서 스크립트를 실행할 때마다 열리고 그 다음에 "Evaluating Age"(브라우저 창의 아래쪽 패널에서)를 볼 수 있습니다. 삽입 된 이미지를 참조하십시오. 처리가 진행되고 있지만 "평가 나이"상태는 변하지 않습니다. 나는 테이블에 나이 칼럼을 가지고 있지만, 왜 거기서 멈추고, 나를 때리나요? 어제 나는 20 시간 동안 스크립트를 계속 실행 한 다음 그것을 죽였다.

제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?실의 맨 위에, 나는 "당신이 자원 부족이 아닌 한"라고했습니다. . .
나는 수백만 줄이 야심적이라고 생각한다. 앞서 언급했듯이, 필자가 쓴 코드는 어떤 의미에서는 '최상'이 아니다. 더 최적화 될 수도 있지만, 당신이 언급 한 데이터 크기가 실행 가능할 지 확신 할 수 없습니다. 이것은 실제로 JMP 그 자체에 대한 주석이 아니며, 어떤 데스크탑 소프트웨어에 대해 합리적인가에 관한 것입니다.
나는 좀 더 깊이 파고들 수도 있지만, 나를 돕기 위해 언급 한 두 개의 큰 테이블에 얼마나 많은 환자 ID가 있는지 알면 좋을 것입니다. 코드를 작성한 방식에서이 코드가 성공적인 완성을 결정하는 요소 중 하나라는 것을 알고 있습니다.
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?안녕하세요 이안 , 나는 각 테이블에 약 100 개의 레코드가있는 더 작은 데이터 세트에서 스크립트를 작업했으며 출력은 예상대로입니다. 고맙습니다. 위의 체인에서 정답을 표시했습니다.
현재 내가 직면 한 과제는 내가 가지고있는 더 큰 데이터 세트 (2 백만 레코드)에서 스크립트를 실행하는 것입니다.
또한 이전에 언급 한 시나리오 2의 스크립트를 도와 줄 수 있습니까? 고맙습니다. 이 쿼리를 다른 쿼리로 기록하려면이 작업을 수행 할 수 있습니다.
도와 줘서 고마워.
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?안녕 이안, 안녕하세요.
내가 가지고있는 파일들에 대해 스크립트를 실행하기 시작했다. 테이블은 거대한 .. 외래 환자에서 약 2 백만 행, 입원 환자에서 약 백만 명이 .. 스크립트는 계속 실행 중입니다. 나는 12 시간 동안 계속 실행하고 몇 분 전에 다시 죽였습니다.
작은 데이터 세트에서 먼저 실행하고 응답하는 방법을 살펴 보겠습니다.
스크립트에서 다른 문제를 발견 할 수 있습니까? 코드를 제거하고 테이블을 호출하도록 변경했으며 테이블에있는 열 이름의 이름을 변경했습니다.
문안 인사,
Vinod
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?승인. 네가 가까이있는 것처럼 들리 네. 다른 문제가있을 수 있지만 코드에서 2 행과 3 행은 다음과 같아야합니다.
DTI = DataTable ( "ANE_2010-2015" ) ;
dto = DataTable ( "Consolidated-SOC-2011-2015" ) ;
이것은 JSL의 테이블을 참조하는 방법이기 때문에.
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?안녕과 감사합니다 이안. jsl 파일을 실행했고 결과물이 올바르게 작동합니다.
내가 가진 두 jmp 테이블에 적용 jSL을 수정하려고했습니다. 스크립트를 실행하는 중에 아무 일도 일어나지 않거나 오류 메시지가 나타나지 않으면 스크립트에서 잘못된 작업을하고있는 것처럼 보입니다. 확인 및 지침을 위해 편집 된 JSL을 첨부하고 있습니다.
위의 스크립트는 시나리오 1, 시나리오 2 앞에서 설명한 바와 같이 입원 환자와 외래 환자 jmp 테이블이 하나의 통합 jmp 테이블로 연결되어 스크립트가 어떻게 변경되어야합니까? 입원 환자와 외래 환자 중 어떤 데이터 행을 구별하기 위해 각 데이터 행에 대해 "OP"및 "IP"플래그가있는 열이있었습니다. 입원 환자와 외래 환자 테이블의 환자 ID와 방문 데이터는 통합 jmp 테이블 내의 환자 ID와 방문 날짜 열에 연결됩니다.
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?좀 더 쉽게 볼 수 있도록하기 위해 위에 설명 된 논리를 구현하는 코드를 작성했습니다. 첨부 파일을 저장하고 JMP에서 열고 '편집> 스크립트 실행'을 실행하십시오. 그것은 (임의로) 테이블 '입원 환자'와 '외래 환자'(위의 예가 첨부되어 있음)를 만들고 '외래 환자'에 열을 추가합니다. 코드에 대해 걱정하지 마십시오. 두 테이블을보고 원하는 것이 맞는지 확인하십시오.
(BTW, 나는 코드가 어떤 의미에서든 '최고'라고 주장하지 않는다. 왜냐하면 스레드가 보여 주듯이, 내가 명확한 요구 사항을 가지고 있는지 확신 할 수 없기 때문이다.)
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?고맙습니다 이안 . 당신이 쓴 것에서부터, 당신이 맞다고 생각합니다. 당신이 보낸 파일을 시험해 본 후 되돌리기 위해 24 시간을주십시오.
참고로 비즈니스 컨텍스트에서, 나는 입원 환자 방문의 14 일 이내에 외래 환자 방문을 위해 온 환자의 사례를 찾으려고 노력하고 있습니다. 앞으로 비즈니스 요구 사항에 따라 필요한 결과 세트를 얻으려면 일 수 (간격)를 조정해야합니다.
당신의 성명서 중 하나는 "나는 여러 성냥을 기대하지 않는다는 감각이있다. 그래서 그 가능성을 허용하고 싶지는 않다."
모든 외래 환자 또는 입원 환자 방문은 별개의 케이스이며 테이블의 개별 행입니다. 환자가 같은 날 또는 외래 전문의 두 가지 외래 진료 약속을 가질 수 있습니다. 동일하거나 다른 전문 분야 일 수 있습니다. 그것이 당신이 복수 경기에 의해 의미했던 것 인 경우 환자의 각 입원 방문 날짜를 반복 할 때 가능합니다.
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?승인. 당신이 건네 야 할 데이터와 비슷한 데이터를 만들었습니다. 첨부 파일을 저장하고, 테이블을 열고 각각에 저장된 스크립트를 실행하여 보입니다.
내 이해를 확인하려면 다음과 같이 '외래 환자'의 행을 반복 할 수 있습니다.
1/. 첫 번째 행은 'ID = 1'이고 'Out Date = 20Jan2014 01:28 :05 '.
2 /. 'ID = 1'및 '날짜'가 20 일 2014 01:28:05보다 14 일 이전이 아닌 '입원 환자'의 행을 찾으십시오. 나는 당신이 여러 경기를 기대하지 않는다는 감각을 가지고 있으므로, 당신이 그 가능성을 허용하고 싶은지 확실하지 않습니다. 그러나 일치하는 항목이 있으면 현재 행 (이 경우 행 1)의 'In Date'값을 포함하는 '외래 환자'에 새 열을 추가하려고합니다.
삼/. '다음 행으로 이동' 외래 환자 '라고 말하고 테이블 끝까지 반복하십시오.
이게 맞습니까?
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입? 안녕 이안 ,
나는 비 코딩 배경에 대해 일찍 언급하지 않았으므로, 당신이 나에게 응답을 보냈을 때 당신을 완전히 이해한다. 고맙습니다.
네가 말한 것처럼 노력했다. 내가 얻는 결과는 다음과 같다.

내가 테이블에 가지고있는 관찰
- 입원 환자와 출납 환자의 환자는 한 번만 방문 타임 스탬프를받습니다. 과
- 모든 환자가 두 테이블에서 (안팎으로)
첫 번째 회신에 추가 한 시나리오 세부 사항에 따라 ... 아래에 분명히 나타 내기 위해 노력 중 ...
에이. 제공되는 시나리오 및 데이터 구조에서 각 환자가 가지고있는 표 1 (외래 환자)에서 여러 번 방문하고 동일한 환자가 여러 번 방문하거나 표 2 (입원 환자)에서 한 번 방문하지 않을 수도 있습니다.
비. 환자의 입원 환자 방문 날짜 각각에 대한 환자의 외래 방문 날짜 중 하나보다 적은 필요 (환자의 각 입원 환자 방문 날짜는 동일한 환자의 외래 방문 날짜와 각각 비교되어야 함)
기음. 기준 b를 충족시키는 외래 환자 행의 경우, 입원 환자 방문 날짜가 동일 환자의 외래 방문 날짜보다 14 일 이하 임 (이전에 그 반대를 잘못 진술했을 수도있다. 죄송합니다)
디. 기준 c가 충족 될 때마다 외래 환자 표 그 환자에 대해 1로 표시해야 함 (예)
이자형. 새 열을에 추가해야합니다. 외래 환자 표 입원 환자 방문 날짜를 파악하기위한 기준 충족 후 (기준 충족)
에프. 입원 환자 방문 기준 b 및 c를 충족시키는 외래 환자 행이 없다면 외래 환자 표에서 0을 신고하십시오.
희망이 충분히 분명하다.
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?죄송합니다. 질문에 신속하게 응답 할 수있는 코드를 사용하지만 분명히 JMP와 함께 사용하지 않아도됩니다.
내가 올바른 방향에 있는지 확인하려면 위의 코드를 선택하고 클립 보드로 복사하십시오. 그런 다음 '새로 만들기> 새 스크립트'를 실행하여 결과 창에 붙여 넣으십시오. 그런 다음 '편집> 스크립트 실행'을 실행하십시오. 짧은 지연 후 'In', 'Out'및 'In and Out Dates'라는 세 개의 테이블을 만들어야합니다. 처음 두 테이블에서 '테이블> 조인'을 사용하고 일치하는 열로 조인하여 세 번째 테이블을 얻을 수 있습니다. 이 작업을 수행하는 방법에 대한 추가 도움말이 필요하면 다음을 참조하십시오. http://www.jmp.com/support/help/Join_Data_Tables.shtml . 세 번째 테이블에서 "Criterion Met?"열 머리글을 두 번 클릭하십시오. 다음은 JMP 수식 열입니다 ( '값 순서'속성이 정의되어 있음). http://www.jmp.com/support/help/Create_a_Formula_Column.shtml .
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?안녕하세요 이안 , 먼저 답장을 보내 주셔서 감사 드리며 연장에 도움을 드리고자합니다.
JMP에 익숙하지 않고 비 코더 (non-coder), 비즈니스맨, 나는 평신도와 단계별 지침을 좀 더 필요로합니다. 가장 편안하고 빠른 해상도를 제공 할 수있는 대화 형 방식으로 가고 싶습니다.
하지만 그 전에는 필요성에 대해 명확하게 설명하고 싶습니다 ... 목적과 두 가지 시나리오를 나열한 두 개의 테이블에 데이터의 더미 스냅 샷을 보여주었습니다. 세 번째 관련 실행 기반의 설명이 뒤 따릅니다. 이 긴 감기 답변에 대해 유감스럽게 생각하지만 적절한 지침을 제공하는 데 도움이 될 필요가 있다고 생각합니다. 양해 해 주셔서 다시 한번 감사드립니다.
1. 시나리오 1
외래 환자 JMP 표 1 : (관련 칼럼 만 표시)
환자 ID 방문 날짜 ..... ........ ...... ........
2010 1 03/20/2010
2010 1 05/15/2010
2011 1 01/19/2011
2011 년 1 월 8 일 08/04/2011
.
.
2010 2 06/18/2010
2010 2 07/12/2010
2010 2 08/1/2010
.
.
n 명의 환자에 대해서도 마찬가지입니다. 5 년 만에 외래 방문 환자가 1 명 있습니다.
입원 환자 JMP 표 2 : (관련 칼럼 만)
1 년 환자 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.
또한 위의 입원 환자와 외래 환자의 테이블과 데이터를 연결하여 연결 테이블을 만들었습니다. 이 연결 테이블 , 환자 데이터의 어느 행이 입원 환자인지, 어떤 외래 환자 및 동일한 열 이름을 유지했는지 식별하기위한 열을 소개했습니다. 이러한 시나리오에서 시나리오 1의 공식을 수정하여 부분 집합 테이블을 생성하는 방법은 무엇입니까?
삼. 시나리오 1과 2에서 작성된 수식의 경우, JMP 내에서 하위 집합 테이블을 가져올 수있는 수식을 적용 / 실행해야합니까?
제목 : Re : 두 개의 JMP 테이블을 기준으로 로컬 폴더에 저장된 가입?시작점이 두 개의 JMP 테이블로 나타나고 리소스가 부족하지 않는 한 JMP에서 조건의 조인과 적용을 수행하는 것이 좋을 수도 있습니다. 아래 코드를 참고하십시오. 그러나 'DateDifference ()'함수의 인수 순서에주의하십시오! 대화식으로 작업하려면 "Criterion Met"의 수식을 살펴보십시오. 귀하의 경우에 맞는 유사한 것을 만드십시오.
NamesDefaultToHere ( 1 ) ;
// 시뮬레이션 된 '날짜'데이터를 만듭니다.
nr = 100 ;
dt1 = NewTable ( "에서" ,
NewColumn ( "신분증" , 숫자 , 명사 같은 , 가치 (( 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 , 일주 ( 임의의 정규화 ( 14 , 7 ) , 0 )) ;
dayDelay [ Loc ( dayDelay <= 0 )] = 0 ;
outVals = inVals + InDays ( dayDelay ) ;
dt2 = NewTable ( "아웃" ,
NewColumn ( "신분증" , 숫자 , 명사 같은 , 가치 (( 1 :: nr ) ` )) ,
NewColumn ( "만료일" , 숫자 , 마디 없는 ,
가치 ( outVals ) ,
체재 ( "ddMonyyyy h : m : s" , 22 개월 , 0 ) ,
입력 형식 ( "ddMonyyyy h : m : s" , 0 ) ,
)
) ;
// dt1과 dt2에 가입하십시오.
기다림 ( 삼 ) ;
dt3 = dt2 << 어울리다 (
와 ( dt1 ) ,
선택과 함께 ( : 신분증 , : 날짜 있음 ) ,
고르다 ( : 종료 날짜 ) ,
열 일치시키기 ( : 신분증 = : 신분증 ) ,
배수 곱하기 ( 0 , 0 ) ,
비 일치 포함 ( 0 , 0 ) ,
기본 테이블 순서 보존 ( 1 ) ,
출력 표 ( "입출력 날짜" )
) ;
// crirerion이 만족되는지 나타내는 열을 추가합니다.
dt3 << 새 열 ( "기준 충족?" ,
숫자 ,
"명사 같은" ,
체재 ( "베스트" , 12 ) ,
공식 ( 만약 ( 날짜 차이 ( : 날짜 있음 , : 종료 날짜 , "일" ) <= 14 , 1 , 0 ) ) ,
값 레이블 ( { 0 = "아니" , 1 = "예" } ) ,
선택 항목 설정
) ;