열 끝에 문자 값이 포함된 열을 다시 코딩합니다.안녕하세요,
나는 같은 테이블을 가지고
| ID | 칼럼2 |
| ABC001235G | |
| ABC001234 | |
| ABC001235 | |
| ABC001234D | |
| ABC001234F | |
'ABC001234D' 및 'ABC001234F'와 같은 모든 값이 'ABC001234'가 되도록 ID 열을 다시 코딩하고 싶습니다. 기본적으로 명령문의 마지막 문자를 삭제하고 싶습니다. 하지만 수동 프로세스로는 이 작업을 수행할 수 없습니다. 수행할 행이 너무 많아 스크립트에서 사용할 수 있는 각 ID에 대해 수동으로 작성할 수 없었습니다. 스크립팅을 통해 이를 수행할 수 있는 방법을 찾고 있습니다. 감사해요!
고급 통계 모델링자동화 및 스크립팅데이터 혼합 및 정리대량 맞춤화Re: 열 끝에 문자 값이 포함된 열을 다시 코딩합니다.이를 위해 정규식을 사용하겠습니다. 나는 적어도 어느 정도 수준에서 정규식을 사용하기 위해 이것을 좋아했습니다. 정규손 또한 확인해보세요 JMP 문자 함수 - 정규식 스크립팅 인덱스의 Regex.
다음은 JMP에서 Regex를 사용하여 끝 문자를 제거하는 두 가지 가능한 방법의 예입니다. 대문자가 아닌 문자도 지원하도록 쉽게 수정할 수 있습니다.
Names Default To Here(1);
dt = New Table("Untitled 3",
Add Rows(5),
Compress File When Saved(1),
New Column("ID",
Character,
"Nominal",
Set Values(
{"ABC001235G", "ABC001234", "ABC001235", "ABC001234D", "ABC001234F"}
)
)
);
dt << New Column("Regex1", Character, Nominal, Formula(Regex(:ID, "^[A-Z]+(\d+)")));
dt << New Column("Regex2", Character, Nominal, Formula(Regex(:ID, "[A-Z]*$", "", GLOBALREPLACE);));
사용 사례에 따라 하나를 선택합니다(다른 문자열에서 어떻게 작동하는지 예제 코드로 테스트하기 쉽습니다).
첫 번째는 문자열 시작 부분부터 1개 이상의 대문자와 그 뒤에 임의의 숫자가 따라오는 것과 일치합니다(따라서 숫자 뒤의 모든 내용은 무시됩니다).
두 번째는 문자열 끝에서 0개 이상의 대문자와 일치하고 이를 빈 문자열로 바꿉니다.
Re: 열 끝에 문자 값이 포함된 열을 다시 코딩합니다.다음 수식을 사용하여 이 작업을 수행할 수 있습니다.
val = Reverse( :ID );
While( Is Missing( Num( Substr( val, 1, 1 ) ) ),
val = Substr( val, 2 )
);
Reverse( val );
숫자가 아닌 후행 값이 모두 제거됩니다.
Re: 열 끝에 문자 값이 포함된 열을 다시 코딩합니다.안녕, 사닐!
다음은 도움이 될 수 있는 공식이지만 ID 변수의 명명 규칙과 정확성에 대해 몇 가지 가정을 해야 합니다.
ID 값의 시작 부분에 일관되게 3자가 있는 경우 새 열을 만들고 다음 수식을 사용할 수 있습니다.
하위 문자열( :ID, 1, 3 ) || 정규식( :ID, "\d+" )
이 수식을 사용하면 숫자 값의 길이가 일관되지 않을 수 있습니다.ID 값의 시작 부분에 문자 수가 일관되지 않도록 공식을 적용하는 것도 그리 어렵지 않습니다.그러나 누군가 ID를 O(문자) 대신 0(숫자)으로 잘못 입력하거나 기타 특정 인쇄상의 오류가 있는 경우 예상치 못한 결과가 발생할 수 있습니다.
행운을 빌어요,
케빈