문자열에서 다양한 길이의 숫자를 다른 열로 추출일, 시간, 분 및 초를 나타내는 값이 있는 Duration이라는 열이 있습니다. 마지막 m은 초를 나타냅니다.
따라서 일반적인 형식은 (0-365)d(0-24)h(0-60)m(0-60)m입니다.
여기 몇 가지 예가 있어요.:
0일 15시간 47분 43분
10일 10시 21분 54분
0일 04시 07분 32분
268일 06시 02분 33분
계산을 수행할 수 있도록 다른 열에서 일, 시간, 분 및 초 수를 추출해야 합니다.
일수 구하는 공식을 써봤는데,
Words( :Duration, "d" )[1]
두 번째 숫자를 추출하기 위해 다음 공식을 사용했습니다.
Substr( Item( 2, :Duration ), 1, 2 );
같은 방법으로 항목식에서 3과 4를 이용하여 세 번째와 네 번째 숫자를 추출하였다.
이 문자열을 숫자로 변환하기 위해 열을 4개 더 만들고 복사하여 붙여넣고 데이터 유형을 숫자로 변경했습니다.
나는 이것이 결과에 도달하는 방법이라는 것을 이해합니다.
누구든지 더 효율적인 방법으로 나를 도울 수 있는지 궁금합니다.
데이터 테이블스크립팅Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.로그를 알려주셔서 감사합니다. 거기에서 결과를 봤습니다. 이전에는 결과가 별도의 창에 표시될 것이라고 생각했습니다.
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.표시
결과가 별도의 창에 표시될 것이라는 인상을 받았습니다. 이제 저는 로그를 살펴보았고 거기에서 결과를 보았습니다. 스크립트를 여러 번 실행했습니다.
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.@txnelson 맞다. 별도의 스크립트로 사용하는 방법을 보여주셨습니다. 이 식은 열 수식에 필요한 모든 것입니다.
Num( Regex( cell[i], "(\d+)d (\d+)h (\d+)m (\d+)m", "\1" ) )
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.@Mark_Bailey 스크립트는 독립형 JSL입니다.스크립트 창에 넣고 스크립트를 실행하여 실행합니다.나는 그렇게 했고 훌륭하게 작동하여 JMP 로그에 다음과 같은 결과를 제공했습니다.
day = 0;
day = 10;
day = 0;
day = 268;
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.표시,
여러 가지 방법으로 귀하의 스크립트를 사용해 보았습니다.
a) 스크립트 편집기에서 스크립트를 사용하고 실행하여,
b) 이름이 "cell"인 열을 만들고 그 안에 항목 목록을 입력하고 + "day"라는 다른 열을 만들고 해당 열의 수식으로 "for 루프"를 사용합니다.
그리고 다른 방법들.
오류가 발생합니다.
도움을 받기 위해 스크립팅 인덱스를 둘러 보았습니다.
하지만 스크립트를 작동시킬 수 없습니다.저는 스크립팅이 처음입니다. 도와주세요.
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.지금까지 몇 가지 좋은 솔루션을 얻었지만 실제로는 단어() 기능.
다음과 같이 Words() 함수의 마지막 인수에 둘 이상의 구분 기호를 지정할 수 있습니다.
vals={"0d 15h 47m 43m", "10d 10h 21m 54m","0d 04h 07m 32m", "268d 06h 02m 33m"};
for (i=1, i<=nitems(vals), i++,
show(words(vals[i], "dhm ")) //use "d" "h" "m" and a space as delimiters
);
로그에서:
/*:
Words(vals[i], "dhm ") = {"0", "15", "47", "43"};
Words(vals[i], "dhm ") = {"10", "10", "21", "54"};
Words(vals[i], "dhm ") = {"0", "04", "07", "32"};
Words(vals[i], "dhm ") = {"268", "06", "02", "33"};
여기 수식 편집기에 있습니다. In Days(), In Hours(), In Minutes() 함수 숫자 값을 각 단위의 초 수로 변환하여 Duration 열을 만듭니다.

여기에도 데이터 테이블을 첨부했습니다.
이 항목은 내가 가장 좋아하는 두 가지 기능인 Word()(또는 Words()) 함수와 날짜 및 시간을 결합합니다. 다음은 각각에 대해 설명하는 게시물입니다.
수식편집기 함수 하나만 배운다면 워드()가
JMP에서 날짜, 시간, 날짜시간 및 기간 사용
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.Paul- 새로운 기능을 배웠습니다. 솔루션의 상세하고 단순화된 버전에 대해 대단히 감사합니다.!
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.완벽합니다. 귀하의 설명과 스크린샷에 감사드립니다. recode를 사용하여 다른 경우에 시간을 절약했습니다.
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.새 값 핫스팟에서 Recode -Formula Column-을 사용하여 Advanced - Extract Segment를 선택합니다. 일, 시, 초에 대해 저장된 공식이 첨부된 추출 d, sec 및 jmp 파일의 스크린샷.


Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.이 예제는 정규 표현식을 사용하는 방법을 보여줍니다.
Names Default To Here( 1 );
cell = {"0d 15h 47m 43m", "10d 10h 21m 54m", "0d 04h 07m 32m", "268d 06h 02m 33m"};
For( i = 1, i <= N Items( cell ), i++,
day = Num( Regex( cell[i], "(\d+)d (\d+)h (\d+)m (\d+)m", "\1" ) );
Show( day );
);Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.첨부된 샘플표입니다.
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.정규식 사용은 어떻습니까?
하루:
Num( Regex( :Duration, "(\d+)d\s(\d+)h\s(\d+)m\s(\d+)m", "\1" ) )
시간:
Num( Regex( :Duration, "(\d+)d\s(\d+)h\s(\d+)m\s(\d+)m", "\2" ) )
분:
Num( Regex( :Duration, "(\d+)d\s(\d+)h\s(\d+)m\s(\d+)m", "\3" ) )
두 번째:
Num( Regex( :Duration, "(\d+)d\s(\d+)h\s(\d+)m\s(\d+)m", "\4" ) )
실제로 다른 번호를 캡처할 필요는 없지만 각 번호는 캡처 그룹에 있습니다. 다음과 같이 단순화할 수 있습니다.
Num( Regex( :Duration, "(\d+)d\s\d+h\s\d+m\s\d+m", "\1" ) )
Num( Regex( :Duration, "\d+d\s(\d+)h\s\d+m\s\d+m", "\1" ) )
Num( Regex( :Duration, "\d+d\s\d+h\s(\d+)m\s\d+m", "\1" ) )
Num( Regex( :Duration, "\d+d\s\d+h\s\d+m\s(\d+)m", "\1" ) )