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

다음은 결합하려는 두 데이터 테이블의 스크린샷입니다. 출력에는 시간, 반응기, 반사율 및 건조 중량이 모두 포함되어야 합니다.
미리 감사드립니다!
데이터 혼합 및 정리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));

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

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

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

도구의 UI에 테이블 선택에 문제가 있는 것 같습니다... 그리고 사용자는 테이블이 올바른지 또는 선택되었는지 확인해야 합니다. 그렇지 않으면 도구가 자체 조인을 수행합니다.
Re: 완전히 일치하는 열 하나와 가장 근접하게 일치하는 열 하나를 기준으로 테이블을 조인하려면 어떻게 해야 합니까?답장을 보내 주셔서 감사합니다! 예를 들어 작은 예를 업로드하겠습니다.
한 번은 수동으로 시도했지만 최대 24개의 그룹/리액터가 있고 많은 시점을 스크롤해야 하기 때문에 시간이 오래 걸렸습니다. 하위 집합 만들기? 그것이 어떻게 작동하는지 어떻게 보겠습니까?
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: 완전히 일치하는 열 하나와 가장 근접하게 일치하는 열 하나를 기준으로 테이블을 조인하려면 어떻게 해야 합니까?두 데이터 테이블(최상의 경우 올바른 결과가 포함된 테이블)에 여러 리액터가 있는 작은 예제 데이터 세트를 제공할 수 있습니까? 그룹이 너무 많지 않고 자동화가 필요하지 않은 경우 수동으로 수행할 수 있습니다. fuzzy_merge 추가 기능을 사용하고 많은 하위 집합을 사용하여 생물 반응기 그룹을 관리할 수 있습니다.
이 작업을 수행할 수 있는 스크립트(및 도구)도 있지만 아직 완전히 테스트 할 시간이 없었습니다 , 그리고 여전히 약간의 버그가 있음을 확실히 알고 있습니다. 가장 가까운 행 결합 도구는 다음을 수행할 수 있어야 합니다.
- 거리에 따라 가입
- 테이블을 뒤로, 앞으로, 가장 가까운 테이블로 조인(선택적 타이 브레이커 옵션 사용)
- 그룹화 허용
- 공차 사용 허용
- 정렬된 데이터 테이블이 필요하지 않음
