열에서 텍스트를 제거하고 숫자 형식으로 변환하기 위해 JSL에서 찾기 및 바꾸기를 어떻게 코딩합니까?JMP 커뮤니티 여러분, 안녕하세요.
일주일에 한 번 행 값이 "3.45V", "3.34V", "3.12V", "3.23V" 등일 수 있는 배터리 전압 열("V1")이 있는 .txt 데이터를 가져옵니다. 찾기 및 바꾸기를 수동으로 사용하여 데이터에서 문자 "V"를 제거한 다음 수동으로 데이터 유형을 문자에서 숫자로 변경합니다. 이 간단한 작업을 위해 작동하는 JSL을 만들려고 시도했지만 실패했기 때문에 스크립트에 alternate() 또는 mumger()를 포함하는 방법을 잘 이해하지 못하는 것 같습니다.
Re: 열에서 텍스트를 제거하고 숫자 형식으로 변환하기 위해 JSL에서 찾기 및 바꾸기를 코딩하는 방법은 무엇입니까?내 코드에서 논리 오류를 찾았습니다.다음은 값을 제자리에서 변환하는 작은 스크립트가 있는 예제 데이터 테이블입니다.
Names Default To Here( 1 );
dt = New Table( "Example",
add rows( 100 ),
New Column( "col1", character, formula( Char( Random Integer( 78, 100 ) ) || "V" ) ),
New Column( "col2", character, formula( Char( Random Integer( 78, 100 ) ) || "V" ) )
);
dt<<RUN formulas=""></RUN>
Re: 열에서 텍스트를 제거하고 숫자 형식으로 변환하기 위해 JSL에서 찾기 및 바꾸기를 코딩하는 방법은 무엇입니까?안녕하세요 Jim, 귀하의 코드가 제대로 작동하지 않았고 이유를 알 수 없었습니다. 오류 메시지가 포함된 JMP 디버거의 스크린샷과 이 문제를 계속 해결하려는 경우 내 데이터의 하위 집합을 업로드했습니다. 이 대체 솔루션에 매우 관심이 있습니다!

Re: 열에서 텍스트를 제거하고 숫자 형식으로 변환하기 위해 JSL에서 찾기 및 바꾸기를 코딩하는 방법은 무엇입니까?고마워, 댄,
나는 이것을 다음과 같이 내 작업 흐름에 맞출 수 있었습니다.
Names Default To Here( 1 );
:Name( "V1" ) << Set Name( "orig V1" );
New Column( "V1",
Numeric,
"Continuous",
Format( "Fixed Dec", 6, 2 ),
Formula( Num( Word( 1, :orig V1, "V" ) ) )
);
빠른 응답에 감사드립니다!
Re: 열에서 텍스트를 제거하고 숫자 형식으로 변환하기 위해 JSL에서 찾기 및 바꾸기를 코딩하는 방법은 무엇입니까?이와 같은 것이 작동하는지 확인하십시오......완전히 테스트되지는 않았지만 거의 작동해야 합니다.
Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( string, character );
For( theCol = 1, thecol <= N Items( colNames ), theCol++,
For( theRow = 1, theRow <= N Rows( dt ), theRow++,
If( Right( Column( dt, theCol )[theRow], 1 ) == "V",
Column( dt, theCol )[theRow] = Substr(
Column( dt, theCol )[theRow],
1,
Length( Column( dt, theCol )[theRow] ) - 1
)
)
)
);
If( Is Missing( Num( Column( dt, theCol )[1] ) ) == 0,
Column( dt, theCol ) << data type( numeric ) << modeling type( continuous )
);Re: 열에서 텍스트를 제거하고 숫자 형식으로 변환하기 위해 JSL에서 찾기 및 바꾸기를 코딩하는 방법은 무엇입니까?저는 항상 솔루션을 먼저 대화형으로 제작한 다음 스크립트를 제작하는 것을 좋아했습니다. 항상 가능한 것은 아니지만 가까이 갈 수 있습니다.
텍스트 파일을 열면 JMP 테이블이 있는 소스 스크립트에 있는 이 스크립트(물론 필자의 경우)가 제공됩니다.
Open(
"C:\Testing.txt",
columns( New Column( "V1", Character, "Nominal" ) ),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Tab, Comma, CSV( 1 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
특정 사례에 맞게 필요에 따라 수정할 수 있습니다.
이제 V를 제거하고 숫자로 변환하기 위해 두 번째 열을 만듭니다. 이것은 어떤 이유로 전압 형식이 변경되는 경우 오류 검사를 허용합니다. 또한 더 나은 데이터 추적성을 제공합니다. Num( Word( 1, :V1, "V" ) ) 수식으로 열을 만들었습니다. 그런 다음 테이블 패널에 있는 "테이블 복사 스크립트"를 보고 스크립트의 관련 부분을 꺼내 새 열을 생성했습니다.
JSL에서는 다음과 같습니다.
New Column( "Numeric V1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Num( Word( 1, :V1, "V" ) ) )
)
두 가지를 합치는 것이 스크립트가 되어야 합니다.