주어진 열의 두 열에 대해 동일한 값을 가진 행을 찾으려면 어떻게 해야 합니까?예를 들어 여기에서 열 1 —— 3은 다음과 같습니다.
dt = Open( "$SAMPLE_DATA\Missing Data Pattern.jmp" );
dt<<NEW column=""></NEW>

감사해요!
자동화 및 스크립팅Re: 주어진 열의 두 열에 대해 동일한 값을 가진 행을 찾으려면 어떻게 해야 합니까?도와주셔서 감사합니다!

Re: 주어진 열의 두 열에 대해 동일한 값을 가진 행을 찾으려면 어떻게 해야 합니까?@lwx228 , @txnelson ,
그냥 재미로...
- 추가됨 @lwx228 예제 데이터 @txnelson , 첨부된 JMP 데이터 테이블 JN_AdjacentPlus.jmp 참조
- 아래 스크립트는 테이블에 포함되어 있습니다. 스크립트 이름은 "일치하는 인접 열이 있는 행 찾기"이며 실제로 비어 있지 않은 값과 일치합니다.
- 참고 #1: 이 스크립트는 여러 개의 열을 사용합니다. 열은 데이터 테이블에서 인접할 필요가 없으며 xmat의 정의에서 열 사양을 변경하기만 하면 됩니다.
- 참고 #2: Abs(x1-x2)는 인접한 일치 항목이 0을 반환하고 다른 모든 값이 0보다 크도록 합니다.
- 참고 #3: Vmin()은 행렬의 각 열의 최소값을 찾습니다. 따라서 transpose( Vmin(transpose(Abs(x1-x2))) ) 는 Abs(x1-x2)의 최소 행을 반환합니다.
- 참고 #4: Loc( vec ==0 )은 값이 0인 행 번호를 반환합니다.
- 참고 #5: Jim의 솔루션은 모든 일치 항목을 찾고 이 스크립트는 인접한 일치 항목을 찾습니다.
Names Default to Here(1);
dt = current data table();
xmat = dt[0,1::4];
nc = ncol(xmat);
x1 = xmat[0,1::nc-1];
x2 = xmat[0,2::nc];
idx = Loc( Transpose(Vmin(Transpose(abs(x1-x2)))) == 0);
dt << New Column("t1", numeric, continuous);
:t1[idx]=1;
Re: 주어진 열의 두 열에 대해 동일한 값을 가진 행을 찾으려면 어떻게 해야 합니까?고마워요!
Mode( dt[i, 1::3] || [-999] ) == -999
Re: 주어진 열의 두 열에 대해 동일한 값을 가진 행을 찾으려면 어떻게 해야 합니까?다음은 문제에 대한 다른 견해입니다.Mode() 함수를 사용하여 모드가 무엇인지 확인하고 있습니다.실제 모드가 존재하는 경우 이는 최소 2개의 값이 일치하므로 열 t1이 1로 설정됨을 의미합니다. 자세한 설명은 JSL 주석을 참조하십시오.
테스트에 사용한 데이터 테이블을 첨부했습니다.
Names Default To Here( 10 );
dt = Current Data Table();
New Column( "t1" );
For( i = 1, i <= N Rows( dt ), i++,
// add a value to the matrix that is less
// than any value in the data table. If
// the mode() function does not find an
// actual mode, it returns the smallest
// value from the matrix, so if that is
// the value returned, you know there
// are not at least 2 values that equal
// each other in the columns
If( Mode( dt[i, 0] || [-999] ) == -999,
dt:t1[i] = .,
dt:t1[i] = 1
)
);
Re: 주어진 열의 두 열에 대해 동일한 값을 가진 행을 찾으려면 어떻게 해야 합니까?
dt = Current Data Table();
x = dt << Get As Matrix();
For( i = 1, i <= N Row( dt ), i++,
For( j = 1, j <= 2, j++,
If( x[i, j] == x[i, j + 1],
x[i, 5] = 1;
Break();
)
)
);
dt[0, 0] = x;