순서가 다를 수 있는 두 열의 값을 일치시키는 방법웨이퍼의 결함을 두 번 측정했고, 각 결함에 대한 X, Y축 데이터가 있다고 가정해 보겠습니다.
일부 결함은 반복 결함으로, 매우 유사한 축 데이터를 가지고 있으므로(정확히 동일하지는 않지만) "반복" 태그를 붙이고, 일부 결함은 일치하지 않으므로 "새" 태그를 붙입니다.
이 작업을 자동으로 수행하는 수식을 어떻게 작성합니까? (예: "판단 기준" 열을 자동으로 만드는 수식)
(같은 결함에 대해 값이 정확히 같지는 않지만 매우 비슷하다는 점에 유의하세요. 그리고 같은 결함이 전후에 다른 행에 있을 수 있습니다.)
| X-이전 |
Y-이전 |
X-애프터 |
Y-애프터 |
판단 기준은 다음에 따라 |
| -446659 |
888856 |
-446649 |
888852 |
반복하다 |
| -445908 |
630775 |
-445899 |
630772 |
반복하다 |
| -447462 |
301534 |
-446122 |
588199 |
새로운 |
| -140914 |
508425 |
-447456 |
301532 |
반복하다 |
| |
|
-140907 |
508433 |
반복하다 |
고급 통계 모델링소비자 및 시장 조사데이터 혼합 및 정리Re: 순서가 다를 수 있지만 두 열의 값을 일치시키는 방법명확하게 해 주셔서 감사합니다.이 스크립트의 핵심은 기능에 대한 이해입니다.
dt << 행 가져오기 where()
그런 다음 유효한 Before X 및 Y 값이 있는 모든 행을 반복합니다.
Names Default To Here( 1 );
dt = Current Data Table();
xFudge = Abs( Min( Col Min( :"x-before"n ), Col Min( :"x-after"n ) ) );
yFudge = Abs( Min( Col Min( :"y-before"n ), Col Min( :"y-after"n ) ) );
dt << New Column( "Repeat_New", character, set each value( "New" ) );
For( i = 1, i <= N Rows( dt ), i++,
If( Is Missing( :"x-before"n[i] + :"y-before"n[i] ) == 0,
Try(
:Repeat_New[dt << get rows where(
Sqrt(
((xFudge + :"x-before"n[i]) - (xFudge + :"x-after"n)) ^ 2 + ((yFudge
+:"y-before"n[i]) - (yFudge + :"y-after"n)) ^ 2
) < 100 & Row() >= i
)] = "Repeat"
)
)
);
데이터 테이블에 있을 수 있는 행 수를 예상하면 스크립트를 처리하는 데 상당한 시간이 걸릴 것으로 예상할 수 있습니다.
동일한 결함으로 간주되는 거리로 <= 100 단위를 사용하는 것은 내 추측일 뿐입니다.결함 측정 도구의 해상도와 스테퍼 해상도 기능을 모르기 때문에 해당 값을 설정할 실제 방법이 없습니다.그러나 도구 변동성과 해당 설정에서 거리 단위를 추정할 수 있어야 합니다.
Re: 순서가 다를 수 있지만 두 열의 값을 일치시키는 방법안녕하십니까?
답장을 보내 주셔서 감사합니다. 귀하의 방법을 시도했습니다. 그러나 문제가 있습니다.
동일한 행에서만 데이터를 비교하는 것 같습니다.
실제 상황은 다음과 같습니다.
이전에는 500개의 결함, 즉 500개의 행이 있을 수 있었습니다. 이후에는 1000개의 행이 있을 수 있습니다.
동일한 결함이 열 앞의 50#행에 있고 열 뒤의 121행에 있을 수 있습니다.
따라서 모든 반복 결함을 일치시키기 위해 이후의 1000개 행과 이전의 500개 행을 모두 비교해야 합니다.
일치 결과는 다음과 같습니다. 500개 중 490개는 일치 항목을 찾을 수 있었고 10개는 누락되었으며 나머지 500개는 새로운 가산기입니다.
Re: 순서가 다를 수 있지만 두 열의 값을 일치시키는 방법다음은 한 가지 접근 방식입니다.나는 두 점 사이의 차이를 확인한 다음 그 차이에 새로 만들기/반복 논리를 적용합니다.새 계산에 표시되는 데이터 테이블에 오류가 있다고 생각합니다.
Names Default To Here( 1 );
dt = Current Data Table();
xFudge = Abs( Min( Col Min( :"x-before"n ), Col Min( :"x-after"n ) ) );
yFudge = Abs( Min( Col Min( :"y-before"n ), Col Min( :"y-after"n ) ) );
//dt << New Column( "diff" );
dt << New Column( "Repeat_New", character );
For Each Row(
diff = Sqrt(
((xFudge + :"x-before"n) - (xFudge + :"x-after"n)) ^ 2 + ((yFudge + :"y-before"n) - (yFudge +
:"y-after"n)) ^ 2
);
If( diff < 100 | isMissing(diff)
,
:Repeat_New = "Repeat";
,
:Repeat_New = "New"
);
);