JMP 데이터 테이블 정렬 및 JMP Script에서 행 삭제<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕:
저는 JMP의 신인입니다. 처음 두 열의 조건에 따라 데이터 테이블을 정렬하고 서식을 지정하고 싶습니다. 첫 번째 열은 텍스트 문자열("LaserID" )이고 두 번째 열은 데이터를 가져온 시간("time")입니다. 내 목표는 특정 "LaserID"(즉, 반복 없음)의 데이터 행이 하나만 있도록 원래 테이블과 정확히 동일한 수의 열을 가진 다른 테이블을 파생시키는 것입니다. 동일한 "LaserID"를 가진 여러 행을 제거하는 것은 데이터를 가져오는 시점("시간")을 기반으로 합니다.
즉, 새 테이블은 가장 최근에 가져온 데이터와 함께 고유한 "LaserID"가 있는 행으로 구성됩니다.
제가 이루고자 하는 원본과 파이널 테이블을 첨부합니다. 이 작업을 위한 스크립트 작성에 도움을 주시면 감사하겠습니다.
Re: JMP Script에서 JMP 데이터 테이블 정렬 및 행 삭제안녕하세요 David, 저는 귀하의 스크립트를 사용하여 중복을 제거하고 있지만 질문이 있습니다. 예제의 "LaserID" 열) 숫자 및 연속입니까? 어떻게 든 내 경우에는 스크립트가 작동하지 않을 것입니다 .... "문자"로 만들기 위해 열 속성을 변경하면 스크립트가 작동합니다.
감사해요.
Re: JMP Script에서 JMP 데이터 테이블 정렬 및 행 삭제한 쌍의 스크립팅 응답을 받았습니다. 이 작업을 대화식으로 수행하려면 다음 단계를 시도하십시오.
표 정렬 기준 레이저 ID 그리고 시간 .

그런 다음 수식을 사용하여 새 열을 생성하여 레이저 ID 현재 행에서 일치하지 않습니다 레이저 ID 다음 행에서. 테이블이 정렬되어 있기 때문에 레이저 ID 그리고 시간 각 LaserID 시리즈의 마지막 행을 얻게 됩니다.
여기서 요령은 데이터 유형이 다음과 같은 열을 사용하는 것입니다. 행 상태 그리고 선택된 상태 수식의 상태 함수.
선택하다 열 -> 새 열... 데이터 유형을 다음으로 설정하십시오. 행 상태 .

그런 다음 공식.

수식의 경우 행 상태 -> 선택된 상태 .

그런 다음 비교를 Selected State() 함수 안에 넣습니다. 이 비교는 지연() 함수 값과 비교할 -1 인수 사용 레이저 ID 다음 행에서.

이제 열 이름 앞에 있는 별 아이콘을 클릭하여 새 열의 행 상태를 활성 행 상태 영역에 복사하기만 하면 됩니다.

이제 사용할 수 있습니다 테이블->하위 집합 선택한 행의 하위 집합을 지정합니다.

도움이 되길 바랍니다!
-제프
Re: JMP Script에서 JMP 데이터 테이블 정렬 및 행 삭제다음은 max와 함께 tabulate를 사용한 다음 업데이트하는 대체 접근 방식입니다.
dt1 = 데이터 테이블 ( "초기의" ) ;
탭1 = dt1 << 표로 만들다 (
제어판 표시 ( 0 ) ,
테이블 추가 (
열 테이블 ( 분석 컬럼 ( : 시간 ) , 통계 ( 최대 ) ) ,
행 테이블 ( 열 그룹화 ( : 레이저 ID ) )
) , 보이지 않는
) ;
dt2 = 탭1 << 데이터 테이블로 만들기 ;
탭1 << 창 닫기 () ;
dt2 << 업데이트 (
와 함께 ( dt1 ) ,
열 일치 ( : 레이저 ID = : 레이저 ID , : 이름 ( "최대(시간)" ) = : 시간 ) ,
업데이트 테이블에서 열 추가 (
: PRF ,
: 이름 ( "위력(W)" ) ,
: 이름 ( "프몬(W)" ) ,
: PRF2 ,
: 이름 ( "파워2(W)" ) ,
: 이름 ( "Pmon2(W)" )
)
) ;
Re: JMP Script에서 JMP 데이터 테이블 정렬 및 행 삭제다음과 같이 해야 합니다.
최신 행 가져오기 = 기능 ({ dt , ID } , { 기본 로컬 } ,
// 날짜/시간 순서를 가정하면 훨씬 간단해질 수 있습니다!
//지정된 레이저 ID와 일치하는 행만 가져옵니다.
lstRows = dt << 행 가져오기 ( : 레이저 ID == ID ) ;
// 해당 시간을 목록으로 가져옵니다.
lstTimes = 열 ( dt , "시간" )[ lstRows ] ;
// 최대 시간 찾기
위치 = 록 맥스 ( lstTimes ) ;
// 최대 시간을 포함하는 행을 반환합니다.
lstRows [ 위치 ]
) ;
//소스 데이터 테이블
dt = 데이터 테이블 ( "초기의" ) ;
// 레이저 ID의 고유 값 목록 가져오기
요약하다 ( lstID = 에 의해 ( : 레이저 ID )) ;
// 빈 파이널 테이블 생성
newDt = dt << 하위 집합 ( 수식 복사 ( 0 )) ;
newDt << 모든 행 선택 ;
newDt << 행 삭제 ;
newDt << 이름 설정 ( "결정적인" ) ;
// 각 결과에 대한 행 생성
열 ( newDt , "레이저 신분증" ) << 값 설정 ( lstID ) ;
//각 ID를 반복하여 최신 날짜의 행을 찾습니다.
을 위한 ( 나 = 1 , 나 <= N항목 ( lstID ) , 나 ++,
현재 ID = lstID [ 나 ] ;
아르 자형 = 최신 행 가져오기 ( dt , 현재 ID ) ;
보여주다 ( 아르 자형 ) ;
// r번째 행의 값을 새 데이터 테이블에 넣습니다.
을 위한 ( 씨 = 1 , 씨 <= NCol ( dt ) , 씨 ++,
열 ( newDt , 씨 )[ 나 ] = 열 ( dt , 씨 )[ 아르 자형 ]
)
) ;