안녕하세요 여러분,
이런 종류의 데이터 테이블이 있습니다(첨부 파일 참조). 2개의 임계값(-0.5 및 0.5)을 벗어나는 모든 값을 감지하고 상한값으로 대체하고 싶습니다. 예: -5.30, -6.00, -11.56은 동일한 값인 -5.00으로 대체되어야 하고 5.30, 6.00 및 11.56은 5.00으로 대체되어야 합니다.
간단한 방법으로 할 수 있는 제안이 있습니까?
미리 감사드립니다
JSL로 이것을 하는 것에 대해 생각한다면 여러 가지 방법이 있습니다.
예를 들어 단순히 열을 반복하고 조건부로 셀을 바꿀 수 있습니다.
dt = Data Table("test.jmp");
For(i = 8, i <= N Col(dt), i++,
ur = dt << get rows where(Column(dt, i)[] > 0.5);
lr = dt << get rows where(Column(dt, i)[] < -0.5);
Column(dt, i)[ur] = 5;
Column(dt, i)[lr] = -5;
);
대안(JMP 13)은 첨자를 사용하여 데이터 테이블을 행렬로 사용하는 것입니다. 구문은 할당, 즉 셀 값의 교체도 지원합니다. 다음은 예입니다.
dt = Data Table("test.jmp");
t = 0.5; // Treshold value
c = 5; // Ceiling value
nr = N Row(dt);
nc = N Col(dt);
M = dt[1 :: nr, 8 :: nc];// Matrix with all cells from col 8 to end of table
U = M <= t; // Below upper limit?
L = M >= -t; // Above lower limit?
//Assign treshold values to data table
dt[1 :: nr, 8 :: nc] = M :*</img> (U & L) + c * (!U - !L);