일치하는 열과 가장 일치하는 열을 기준으로 테이블 조인안녕,
두 개의 테이블을 결합하고 싶습니다.
두 열에는 완벽하게 일치하는 결과가 있고, 다른 두 열에는 가장 가깝게 일치하는 결과가 있습니다.
각 테이블의 행 수는 다릅니다.
참조 정렬 = 108개 행
정렬된 스캔 = 193개 행
저는 최종 테이블에 참조 테이블의 모든 행, 108개 행과 두 번째 테이블의 일치하는 데이터를 포함시키길 원합니다.
정확한 일치 열:
1. 행 참조 = 행 스캔
2. Col Reference = Col Scan
가장 일치하는 열:
1. X 좌표 참조 = X 좌표 스캔
2. Y 좌표 참조 = Y 좌표 스캔
가능하다면 검색 영역처럼 근접 값을 제어하고 싶습니다.
포럼에서 다른 방법도 시도해 봤습니다. 퍼지 병합과 최근접 행을 사용했지만 원하는 결과를 얻지 못했습니다.
도움을 주시면 감사하겠습니다.
자동화 및 스크립팅기본 데이터 분석 및 모델링데이터 블렌딩 및 정리Re: 일치하는 열과 가장 일치하는 열을 기준으로 테이블 조인원하는 결과의 예를 들어주시겠습니까?
Re: 일치하는 열과 가장 일치하는 열을 기준으로 테이블 조인안녕,
이것은 내가 원하는 결과의 예입니다.
행 14, 15에 대해 -
예를 들어 검색 영역을 30으로 설정하는 옵션이 있는 경우 해당 행은 일치하는 항목이 없고 참조 테이블 데이터만 표시됩니다.
하지만 검색 지역에 관계없이 가장 가까운 결과를 선택하면 제공된 표와 같은 결과가 표시됩니다.
그것이 명확하기를 바랍니다
Re: 일치하는 열과 가장 일치하는 열을 기준으로 테이블 조인이것은 어떤 아이디어를 줄 수 있습니다
Names Default To Here(1);
dt_scan = Open("$DOWNLOADS/scan sorted.jmp");
dt_ref = Open("$DOWNLOADS/reference sorted.jmp");
dt_scan << clear select << Clear Column Selection;
dt_ref << clear select << Clear Column Selection;
dt_res = dt_ref << Join(
With(dt_scan),
By Matching Columns(:Col_Reference = :Col_Scan, :Row_Reference = :Row_Scan),
Drop multiples(0, 0),
Include Nonmatches(1, 0),
Preserve main table order(1),
Output Table("Join of reference sorted with scan sorted")
);
dt_res << New Column("Distance", Numeric, Continuous, Formula(
Sqrt(
(:X_Coordinates_Scan - :X_Coordinates_Reference)^2
+
(:Y_Coordinates_Scan - :Y_Coordinates_Reference)^2
);
));
dt_res << Select Where(
:Distance == Col Min(:Distance, :Col_Reference, :Row_Reference, :ID_Reference)
| Is Missing(:ID_SCAN)
);
dt_res << Invert Row Selection;
dt_res << Delete Rows;Re: 일치하는 열과 가장 일치하는 열을 기준으로 테이블 조인빠른 재생 감사합니다.
이거 잘되네요.
:Distance <30인 경우 결과를 표시하지 않고 참조만 표시하라는 문장을 추가하려고 했습니다.
하지만 거리가 30보다 큰 결과는 나오지 않았습니다.
이 조건을 추가하는 옵션이 있나요?
Re: 일치하는 열과 가장 일치하는 열을 기준으로 테이블 조인어떻게 추가하려고 했나요?
스크립트는 먼저 각 그룹에 대한 최소 거리를 갖는 행과 결합할 수 없는 행을 선택합니다.
dt_res << Select Where(
:Distance == Col Min(:Distance, :Col_Reference, :Row_Reference, :ID_Reference)
| Is Missing(:ID_SCAN)
);
그런 다음 선택 항목을 반전하고 반전된 행을 제거합니다.
dt_res << Invert Row Selection;
dt_res << Delete Rows;
역전 없이 작동하도록 선택 조건을 수정할 수도 있고, 거리 제한으로 역전을 어떻게 고려할지 생각해 볼 수도 있습니다.