마지막 중복 ID만 남기고 중복 ID를 필터링하는 방법은 무엇입니까?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕 모두,
'를 사용할 수 있는 JSL 솔루션이 있기를 바랍니다. <<위치 선택 ' 메시지를 데이터 테이블에 보냅니다. 각 행이 테스트된 장치를 나타내는 데이터의 데이터 테이블이 있습니다.
각 행에 대한 고유 식별자를 지정하는 2개의 숫자 열(예: 'ID' 열 및 '웨이퍼 번호' 열)이 있습니다. 날짜와 시간을 정중하게 지정하는 또 다른 2개의 열도 있습니다. 문제는 때때로 장치가 동일한 데이터 세트 내에서 다시 테스트되어 ID 및 웨이퍼 열의 값이 중복된다는 것입니다. 모든 고유 ID를 선택하고 중복 ID의 경우 마지막 값(행 번호 또는 타임스탬프)만 선택되도록 하고 싶습니다.
아래는 내가 찾고 있는 것을 보여주는 샘플 데이터 테이블입니다. 다시 테스트된 두 부분(여기에서 빨간색으로 강조 표시됨, 해당하는 다시 테스트는 녹색임)이 제외되고 나머지는 모두 선택됩니다.
이것에 대한 도움을 주시면 대단히 감사하겠습니다.
감사합니다.

Re: 마지막 중복 아이디만 남기고 중복 아이디는 어떻게 걸러내나요?안녕하세요,
내가 "ID, WaferNum, 날짜 및 시간(순서대로)별로 테이블을 정렬하겠습니다"라고 말했을 때
Current Data Table() << Sort(By(:ID, :WaferNum, :Date, :Time), Order(Ascending));
나는 당신이 한 것처럼 여러 개의 정렬 (각각에 대한 단일 열)을 차례로 실행하면 여러 열을 인수로 사용하여 단일 정렬을 실행하는 것과 동일한 결과를 얻지 못할 것이라는 매우 강한 의심이 있습니다.
도움이 되었기를 바랍니다
Re: 마지막 중복 아이디만 남기고 중복 아이디는 어떻게 걸러내나요?안녕하세요 여러분,
도움을 주셔서 대단히 감사합니다.
Jeff, 귀하의 접근 방식은 데이터를 추가로 조사한 결과 동일한 날짜 및 시간 값을 가진 중복 항목이 있다는 점을 제외하고는 저에게 큰 도움이 되었을 것입니다(예제에는 표시되지 않았습니다).
결국 나는 jvillaumie의 제안에 따랐다. 아래는 내 구현입니다.
mydt = Current Data Table();
//Sort columns by ID, wafer num, date in that order
mydt << Sort( Replace Table, By(:ID), Order(Ascending));
mydt << Sort( Replace Table, By(:WaferNum), Order(Ascending));
mydt << Sort( Replace Table, By(:Date), Order(Ascending));
//Select duplicates, i.e. if the next row has the same values for ID and waferNum as the current row, i.e. everything but the last duplicate
mydt << Select Where(
:ID == :ID[Row() + 1] & :WaferNum == :WaferNum[Row() + 1]
);
//Delete Selection
mydt <<DeleteRows;
Re: 마지막 중복 아이디만 남기고 중복 아이디는 어떻게 걸러내나요?JMP의 많은 작업과 마찬가지로 이를 수행하는 방법은 여러 가지가 있습니다.
가장 먼저 주목해야 할 점은 열 최대값() 기능은 선택 사항입니다 변수별 인수.

따라서 이것을 사용하여 행 선택 조건을 구성할 수 있습니다.
(:Date ==Col Maximum(:Date,:ID,:WaferNum ))&(:Time ==
Col Maximum(:Time,:ID,:WaferNum,:Date ));
-제프
Re: 마지막 중복 아이디만 남기고 중복 아이디는 어떻게 걸러내나요?ID, WaferNum, 날짜 및 시간(순서대로)을 기준으로 테이블을 정렬하여 ID와 WaferNum이 동일한 행이 테이블에서 서로 뒤따르고 가장 오래된 행이 가장 최근 행 위에 오도록 합니다.
그런 다음 이 수식을 사용하여 "Duplicate"라는 새 열을 만듭니다(직접 복사하여 JMP에 붙여넣을 수 있어야 함).
If( :ID == :ID[Row() + 1, Empty()] & :WaferNum == :WaferNum[Row() + 1, Empty()],
1,
0
)
동일한 ID 및 WaferNum(즉, 가장 최근이 아닌 복제)을 가진 다른 행이 뒤에 오는 행에 "1"로 플래그를 지정합니다.
SelectWhere Duplicate == 0을 사용하십시오.
Re: 마지막 중복 아이디만 남기고 중복 아이디는 어떻게 걸러내나요?다음 토론을 살펴보십시오.
Re: 구문: ID로 인덱스 열을 생성하려면 어떻게 해야 합니까?
JMP 공식 : 그룹별 순위
순위를 설정하면 필터링할 수 있습니다.
론
Re: 마지막 중복 아이디만 남기고 중복 아이디는 어떻게 걸러내나요?감사합니다. 나는 이것에 대한 예를 보았지만 데이터 테이블에 대한 << Select Where() 메시지 내에서 조건을 지정하여 이를 수행할 수 있는 방법이 있기를 바랐습니다. 나는 그것이 가능해야 한다는 느낌을 받지만, 당신이 그것에 대해 어떻게 할 것인지 확신하지 못합니다.
또한 또 다른 고려 사항은 테스트 일괄 처리 내에서 날짜 및 시간 스탬프가 변경되지 않는다는 것입니다. 즉, 내가 지정한 열로 제한될 때 유일한 차이점은 행 번호에 있는 중복 항목이 여전히 있다는 것입니다. 어쨌든 건배.
Re: 마지막 중복 아이디만 남기고 중복 아이디는 어떻게 걸러내나요?한 가지 옵션은 날짜 및 시간에 대해 하나의 열을 만드는 것입니다(연결). 이렇게 하면 ID 및 WaferNum별로 테이블 요약을 사용하고 날짜 및 시간의 최대값을 요청할 수 있습니다. 이렇게 하면 새로운 클린 테이블이 생성됩니다.
론