텍스트를 기준으로 열 분할좋은 오후에요.하나의 열을 세 개의 새 열로 분할하고 원래 열의 문자열 조각을 세 개의 새 열 중 하나에 배치하려고 합니다. 텍스트의 맥락을 기반으로 합니다.나는 열에 대한 텍스트가 일부 구분 기호를 기반으로 문자열을 구문 분석한다는 것을 이해합니다. 그러나 이것이 내가 있어야 할 곳으로 잘 전달되지는 않습니다.텍스트를 읽고 특정 키워드(년, 월 또는 일)를 확인한 다음 해당 열에 문자열 조각("년", "월" 또는 "일" 앞에 오는 숫자 값)을 배치하는 함수가 필요합니다. . word() 함수는 첫 번째 단어나 값을 추정할 수 있으며 이것이 시작이 될 수 있지만 그 값은 여전히 텍스트를 기반으로 하는 세 개의 잠재적 열 중 하나에 배치되어야 합니다. 누구든지 이것을 코딩하는 방법에 대해 생각하고 있습니까?아니면 잠재적인 해결 방법에 대한 아이디어가 있습니까?어떤 통찰력이라도 대단히 감사하겠습니다.
첨부된 예에서는 열 1이 현재 형식의 데이터를 표시하고 열 2-4가 이상적인 상태를 나타냅니다.감사합니다!
스테파니
품질 및 프로세스 엔지니어링Re: 텍스트를 기준으로 열 분할나는 당신이 무엇을 요구하는지 모르겠습니다.내 예에는 하나의 데이터 테이블이 있으며, 이 데이터 테이블은 원본 데이터 테이블에 3개의 새로운 열을 제공합니다.그게 당신이 요구하는 것이 아닌가요?기존 데이터 테이블에 직접 새 열을 생성하려는 경우 JSL은 다음과 같습니다.
Names Default to Here( 1 );
dt = Current Data Table();
// or dt = Data Table("your data table's name");
dt << New Column( "AgeYears" );
dt << New Column( "AgeMonths" );
dt << New Column( "AgeDays" );
For( i = 1, i <= N Rows( dt ), i++,
Match( Word( 2, :Age[i], "- " ),
"day",
:AgeDays[i] =
Num( Word( 1, :age[i], "- " ) ),
"month",
:AgeMonths[i] =
Num( Word( 1, :age[i], "- " ) ),
"year",
:AgeYears[i] =
Num( Word( 1, :age[i], "- " ) )
)
);
독서를 좀 하셔야 할 것 같습니다.JMP를 처음 사용하는 경우 JMP 발견 및 JMP 사용 문서를 읽어야 합니다.JSL 스크립터가 되려면 JMP에서 무엇을 사용할 수 있는지 알아야 합니다.또한 이 두 문서를 읽은 후에는 스크립팅 가이드를 읽어야 합니다.
Re: 텍스트를 기준으로 열 분할좋은 캐치 @Thierry_S .감사합니다 !
Re: 텍스트를 기준으로 열 분할정말 대단해요, 감사합니다 @txnelson !이 코드를 사용하면 데이터를 정리하는 데 걸리는 시간이 크게 단축될 것입니다. 귀하의 응답에 진심으로 감사드립니다. 빠른 질문: 새 변수를 만든 다음 원래 dt에 다시 병합하는 대신 새 변수를 기존 dt에 직접 포함하는 방법이 있습니까?
스테파니
Re: 텍스트를 기준으로 열 분할안녕,
스크립트 끝에 사소한 오타가 있는 것 같습니다. 마지막 Match 사례에서 수신 열은 :AgeMonths[i]가 아니라 :AgeYears[i]여야 합니다.
최상의,
TSRe: 텍스트를 기준으로 열 분할이를 처리하는 한 가지 방법이 있습니다.
Names Default To Here( 1 );
dt = New Table( "Example dt",
Add Rows( 10 ),
Set Header Height( 46 ),
New Column( "Age",
Character,
"Nominal",
Set Selected,
Set Values(
{"2-day old", "43-day old", "3-day old",
"3-month old", "4-month old", "5-day old",
"32-day old", "13-year old", "10-year old",
"10-month old"}
)
)
);
dt << New Column( "AgeYears" );
dt << New Column( "AgeMonths" );
dt << New Column( "AgeDays" );
For( i = 1, i <= N Rows( dt ), i++,
Match( Word( 2, :Age[i], "- " ),
"day",
:AgeDays[i] =
Num( Word( 1, :age[i], "- " ) ),
"month",
:AgeMonths[i] =
Num( Word( 1, :age[i], "- " ) ),
"year",
:AgeYears[i] =
Num( Word( 1, :age[i], "- " ) )
)
);
위에 적힌 대로 수정했습니다.