문자열에서 다양한 길이의 숫자를 다른 열로 추출일, 시간, 분 및 초 수를 나타내는 값이 포함된 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 );
같은 방법으로 Item 수식에서 3과 4를 사용하여 세 번째와 네 번째 숫자를 추출합니다.
이 문자열을 숫자로 변환하기 위해 4개의 열을 더 만들고 복사하여 붙여넣고 데이터 유형을 숫자로 변경했습니다.
나는 이것이 결과를 얻기 위한 우회적인 방법이라는 것을 이해합니다.
누군가가 더 효율적인 방법으로 나를 도울 수 있는지 궁금합니다.
고급 통계 모델링소비자 및 시장 조사데이터 접근실험 설계대량 맞춤화품질 및 프로세스 엔지니어링결과 공유 및 전달Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.로그를 알려주셔서 정말 감사합니다. 거기에서 결과를 봤습니다. 이전에는 결과가 별도의 창에 표시될 것이라고 생각했습니다.
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.표시
결과가 별도의 창에 표시될 것이라는 인상을 받았습니다. 이제 로그를 살펴보았고 거기에서 스크립트를 실행한 횟수만큼 결과를 보았습니다.
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.@txnelson 맞다. 그는 그것을 별도의 스크립트로 사용하는 방법을 보여주었습니다. 이 표현식은 열 수식에 필요한 전부입니다.
Num( Regex( cell[i], "(\d+)d (\d+)h (\d+)m (\d+)m", "\1" ) )
Re: 문자열에서 다양한 길이의 숫자를 다른 열로 추출합니다.@마크_베일리 스크립트는 독립형 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"};
여기 수식 편집기에 다음과 함께 있습니다. 일(), 시간(), 분() 함수 숫자 값을 각 단위의 초 수로 변환하여 Duration 열을 만듭니다.

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