찾아서 교체할 스크립트나는 피크 면적 수가 포화되면 "saturated (####)"를 추가하는 GCMS 프로그램을 사용합니다.이러한 결과를 Excel에서 JMP 데이터 테이블로 내보낸 후 이러한 항목을 찾아 "포화()"를 제거하지만 숫자는 연속 12,0 형식의 숫자로 남겨두는 스크립트를 실행하고 싶습니다.
스크립팅Re: 찾아서 교체할 스크립트위에서 준 코드는 JMP 로그 . 처럼 보인다 @txnelson 이미 '영역' 열을 처리하는 방법을 알려 주었습니다. 원하는 경우 패턴 일치 코드와 JSL의 조합을 사용할 수 있습니다.
이 모든 것들로 인해 입력의 규칙성에 대해 안전하게 가정할 수 있는 것으로 귀결됩니다. 패턴 일치 접근 방식이 (약간) 더 일반적이지만(더 쉽게 만들 수 있음) 귀하의 경우에는 중요하지 않을 수 있습니다.
Re: 찾아서 교체할 스크립트Area 열에서 이것을 시도하십시오
Names Default To Here( 1 );
dt = Current Data Table();
// Loop across all character columns and find those who have the pattern (###)
// and if found, then convert all columns
For( k = 1, k <= N Rows( dt ), k++,
If( Contains( :Area[k], "(" ),
:Area[k] = Word( 2, :Area[k], "()" )
)
);
:Area << data type( numeric ) << modeling type( continuous ) << Format( "Fixed Dec", 12, 0 );Re: 찾아서 교체할 스크립트슬프게도 내가 스크립트를 실행했을 때 아무 일도 일어나지 않았습니다.도움이 된다면 열 속성과 함께 내 데이터의 스크린샷을 포함했습니다.다시 한번 감사합니다!

Re: 찾아서 교체할 스크립트내가 올바르게 이해하면 이것이 사용할 기회가 될 수 있습니다 JMP의 패턴 매칭 (덕분에 @Craige_Hales 


NamesDefaultToHere(1);
// Define a function
removeSaturated =
Function({inStr}, {Default Local},
// A pattern that will match a span of digits, with or without a leading '-'
digits = (""|"-") + patSpan("0123456789");
// Put the match into 'found' (might be identical to 'inStr')
patMatch(inStr, digits >? found);
// Return 'found' as a number
Num(found);
);
// Try it out
Print(removeSaturated("saturated( 635403558 )"));
Print(removeSaturated("saturated(635403558)"));
Print(removeSaturated("635403558"));
Print(removeSaturated("635403"));
Print(removeSaturated("-635403"));
Print(removeSaturated("saturated( -635403 )"));
Re: 찾아서 교체할 스크립트스크립트는 "("가 첫 번째 문자이고 ")"가 마지막 문자일 것으로 예상합니다.공백 문자가 처음이나 끝에 있을 수 있습니까?
이 버전의 스크립트를 사용해 보고 도움이 되는지 확인하십시오.
Names Default To Here( 1 );
dt = Current Data Table();
// Get all character columns
colList = dt << get column names( character, string );
// Loop across all character columns and find those who have the pattern (###)
// and if found, then convert all columns
For( I = 1, i <= N Items( colList ), i++,
If( Left( Trim( Char( Column( dt, colList[i] )[1] ) ), 1 ) == "(" & Right( Trim( Char( Column( dt, colList[i] )[1] ) ), 1 ) == ")",
For( k = 1, k <= N Rows( dt ), k++,
If( Left( (Trim( Column( dt, colLIst[i] ) )[k]), 1 ) == "(",
Column( dt, colList[i] )[k] = Substr( Trim( Column( dt, colList[i] )[k] ), 2 )
);
If( Right( Trim( Column( dt, colList[i] )[k] ), 1 ) == ")",
Column( dt, colList[i] )[k] = Word( 1, Column( dt, colList[i] )[k], ")" )
);
);
// Convert to numeric, etc.
Column( dt, colList[i] ) << data type( numeric ) << modeling type( continuous ) << Format( "Fixed Dec", 12, 0 );
)
);Re: 찾아서 교체할 스크립트대본 감사합니다만 제가 충분히 구체적이지 못한 것 같습니다.스크립트를 작성하는 것은 저에게 매우 새로운 일이며 숫자의 길이는 중요하지 않다고 생각했습니다.나는 그것이 잘못되었다고 생각합니다.스크립트를 가지고 놀았지만 "saturated( 635403558 )"를 635403558로 바꾸지 못했습니다.당신의 도움에 감사드립니다.
Re: 찾아서 교체할 스크립트대화식으로 찾기 기능을 사용하여 "(" 및 ")"를 전체적으로 대체하는 것은 매우 쉽습니다.그런 다음 Standardize Attributes를 사용하여 해당 열을 모두 선택하고 숫자, 연속 형식(Fixed Dec, 12,0)으로 변경할 수 있습니다.
찾기는 다음에서 사용할 수 있습니다.
편집=>검색=>찾기
Standardize Attributes는 데이터 테이블의 경우 왼쪽 열 패널의 빨간색 삼각형 아래에서 사용할 수 있습니다.
여기에 트릭을 수행하는 작은 스크립트가 있지만 대용량 데이터 테이블을 사용하면 속도가 느릴 수 있습니다.
Names Default To Here( 1 );
dt = Current Data Table();
// Get all character columns
colList = dt << get column names( character, string );
// Loop across all character columns and find those who have the pattern (###)
// and if found, then convert all columns
For( I = 3, i <= N Items( colList ), i++,
If( Left( char(Column( dt, colList[i] )[1]), 1 ) == "(" & Right( char(Column( dt, colList[i] )[1]), 1 ) == ")",
For( k = 1, k <= N Rows( dt ), k++,
If( Left( (Column( dt, colLIst[i] )[k]), 1 ) == "(",
Column( dt, colList[i] )[k] = Substr( Column( dt, colList[i] )[k] ,
2)
);
If( Right( (Column( dt, colList[i] )[k]), 1 ) == ")",
Column( dt, colList[i] )[k] = Word( 1, Column( dt, colList[i] )[k], ")" )
);
);
// Convert to numeric, etc.
Column( dt, colList[i] ) << data type( numeric ) << modeling type( continuous ) <<
Format( "Fixed Dec", 12, 0 );
)
);