하나의 완전히 일치하는 열과 하나의 가장 가까운 일치를 기반으로 테이블을 조인하려면 어떻게 해야 합니까?안녕,
JMP의 '결합' 기능을 통해 두 개의 데이터 테이블을 결합하고 싶습니다. 시간과 원자로 번호를 기준으로 가입하고 싶습니다. 그러나 데이터 파일 중 하나에는 '시간' 열에 8자리가 있고 다른 하나에는 0자리가 있으므로 이것은 작동하지 않습니다.
(어떻게) 가장 가까운 일치점과 원자로 번호의 시간을 정확히 일치시킬 수 있습니까?
이 문제에 대한 더 오래된 토론을 이미 찾았습니다. 그러나 두 번째 열 '반응기 번호'가 일치하지 않아 이러한 솔루션이 작동하지 않았습니다.

다음은 결합하려는 두 데이터 테이블의 스크린샷입니다. 출력에는 시간, 반응기, 반사율 및 건조 중량이 모두 포함되어야 합니다.
미리 감사드립니다!
데이터 테이블Re: 하나의 완전히 일치하는 열과 하나의 가장 가까운 일치를 기반으로 테이블을 조인하려면 어떻게 해야 합니까?두 데이터 테이블(가장 좋은 경우 올바른 결과가 있는 테이블)에 여러 리액터가 있는 작은 예제 데이터 세트를 제공할 수 있습니까? 그룹이 너무 많지 않고 자동화가 필요하지 않은 경우 수동으로 수행할 수 있습니다. fuzzy_merge 추가 기능을 사용하고 많은 하위 집합을 사용하여 생물 반응기 그룹을 관리할 수 있습니다.
이 작업을 수행할 수 있는 스크립트(및 도구)도 있지만 아직 완전히 테스트 할 시간이 없었습니다 , 그리고 여전히 약간의 버그가 있다는 것을 알고 있습니다. 가장 가까운 행 결합 도구는 다음을 수행할 수 있어야 합니다.
- 거리에 따라 조인
- 테이블을 앞뒤로 조인하고 가장 가까운 테이블로 조인(선택적인 타이 브레이커 옵션 사용)
- 그룹화 허용
- 허용 오차 사용
- 정렬된 데이터 테이블이 필요하지 않아야 합니다.

Re: 하나의 완전히 일치하는 열과 하나의 가장 가까운 일치를 기반으로 테이블을 조인하려면 어떻게 해야 합니까?8자리 숫자의 시간을 반올림하는 새 열을 만들고 여기에 결합하는 것이 어떻습니까?
**편집** 신경 쓰지 마세요.이유를 바로 알 수 있습니다.
다음을 수행하여 가장 가까운 시간의 하위 집합을 얻을 수 있습니다.
Names default to here(1);
dt = New Table( "Example",
New Column( "Time",
Set Values( [14.14, 14.28, 13.56, 13.11, 12.32, .] )
)
);
dt << New Column("Rounded Time",
Formula(Round(:Time, 0))
);
// we're just going to for the row that the value for time - rounded time = the min for that value
dt << New Column("Closest",
Formula(
Abs(:Time - :RoundedTime) == ColMin(Abs(:Time - :RoundedTime), :RoundedTime)
)
);
Re: 하나의 완전히 일치하는 열과 하나의 가장 가까운 일치를 기반으로 테이블을 조인하려면 어떻게 해야 합니까?답장을 보내 주셔서 감사합니다! 나는 작은 예를 업로드 할 것입니다.
한 번 수동으로 시도했지만 최대 24개의 그룹/반응기가 있고 많은 시점을 스크롤해야 하므로 시간이 오래 걸립니다. 하위 집합을 만드시겠습니까? 어떻게 작동하는 것을 볼 수 있습니까?
Re: 하나의 완전히 일치하는 열과 하나의 가장 가까운 일치를 기반으로 테이블을 조인하려면 어떻게 해야 합니까?제공한 예시 데이터세트에 잘못된 값이 일치합니까?
열 건조 중량 g/l을 만들고 반사율 데이터에서 시간 h를 시간 h로 이름을 바꿉니다.

건조 중량 데이터를 다음과 연결합니다.

반응기와 시간 h 열을 선택하고 정렬합니다.
건조 중량에서 누락된 값 선택 -> 일치하는 셀 선택 -> 선택 반전
이제 테이블을 이동하여 가장 가까운 값을 찾을 수 있습니다.

이 시점에서 가장 가까운 값을 계산하는 데 도움이 되는 수식이나 스크립트를 만들 수 있습니다. 예를 들어 다음과 같이 데이터를 더 줄일 수 있습니다.
Names Default To Here(1);
dt = Current Data Table();
r = dt << Get Selected Rows; //selecting of wanted rows could be done in script instead of datatable
r_min = r - 1;
r_max = r + 1;
dt << Subset(rows(Sort List(r||r_min||r_max)), Selected Columns(0));

이 시점에서 건조 중량 시간 값을 복사하여 새 열에 붙여넣고 가장 가까운 행을 계산하는 공식을 만들 수 있습니다.

조인이 사용될 때 가장 가까운 행 조인이 반환하는 내용은 다음과 같습니다.

업데이트를 사용하면 지저분한 열이 많이 생성되지 않습니다.

도구의 UI는 테이블 선택에 문제가 있는 것 같습니다... 사용자는 올바른 테이블을 확인하거나 선택해야 합니다. 그렇지 않으면 도구가 자체 조인을 수행합니다.