다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.안녕! 문제를 해결하는 데 사용된 도구/기술을 추적하는 데 사용하는 SharePoint의 데이터가 있습니다. 여기에는 JMP, BTW가 포함됩니다.한 열의 데이터는 다음 유형의 ;-구분 형식을 따릅니다.
<기술 설명>;#<기술 ID>;<기술 설명>;#<기술 ID>;<기술 설명>;#<기술 ID>...
3.4 오프라인 최적화 및 시뮬레이션 도구;#15;#3.9 시뮬레이션;#30;#4.6 재료 균형;#22
테이블(문제 해결)의 각 행에는 하나 이상의 <기술 ID>가 있을 수 있습니다. <설명>이 #으로 시작하는 경우도 있고 그렇지 않은 경우도 있습니다. 그러나 <기술 ID> 앞에는 항상 #이 붙습니다.
의 문자열과 다중 응답 분석의 형식(15, 30, 22(위 예))을 구문 분석하고 싶습니다.
- ~100개의 가 있으므로 ~100개의 희소 열을 생성하는 것은 낭비인 것 같습니다.샘플 데이터 파일 Failures3Delimited.jmp에 사용된 접근 방식이 이 문제에 접근하는 가장 효율적인 방법입니까?
- REGEX를 배우기 시작했고 를 한 번 찾았지만 전부는 아니었습니다. 루프가 필요합니까? 이를 수행하는 다른 방법이 있나요?
감사해요. JMP17.1 Pro를 사용합니다.
자동화 및 스크립팅데이터 혼합 및 정리Re: 다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.제가 생각해낸 잠재적인 해결책은 다음과 같습니다.

내가 사용한 공식은 다음과 같습니다.
i = 1;
string = "";
While( Word( i, :Input, "#;" ) != "",
theWord = Word( i, :Input, "#;" );
If( Is Missing( Num( theWord ) ) == 0,
string = string || "," || theWord
);
i++;
);
Try( Substr( string, 2 ) );
Re: 다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.매우 우아함 - 복잡한 1초 분할(동일한 구분 기호의 두 배)이나 TEXT 부분 대신 다음과 같이 하면 됩니다.
숫자를 찾아보세요 
ID #30-2가 없기를 바랍니다...
또는 설명: 42
New Column( "IDs",
Character,
"Multiple Response",
Formula(
Concat Items(
Transform Each( {theWord}, Words( :Input, ";#" ),
Char( Num( theWord ) )
),
""
)
),
Set Property( "Multiple Response", Multiple Response( Separator( "." ) ) ),
)
Re: 다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.사용을 제안하지 않을 것입니다 JMP의 문자 패턴 (적어도 모든 다른 기능을) 이해하기가 상당히 어렵기 때문입니다. 하지만 저는 그것을 사용하여 이 작업을 수행했습니다(아마도).
Names Default To Here(1);
str = "3.4 Offline Optimization & Simulation Tools;#15;#3.9 Simulation;#30;#4.6 Material Balance;#22";
idlist2 = {};
resval = "";
Pat Match(str, Pat Span("#") + Pat Regex("\d+?") >> next_id + Pat Regex("(;|$)") + Pat Test(
Insert Into(idlist2, next_id); resval = Concat Items(idlist2, ", "))
);
show(idlist2, resval);
여기에 수식에 사용하는 예가 있습니다.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
Compress File When Saved(1),
New Column("Column 1",
Character,
"Nominal",
Set Values(
{
"3.4 Offline Optimization & Simulation Tools;#15;#3.9 Simulation;#30;#4.6 Material Balance;#22"
}
)
),
New Column("Column 2",
Character,
"Multiple Response",
Formula(
idlist2 = {};
resval = "";
Pat Match(
:Column 1,
Pat Span("#") + Pat Immediate(Pat Regex("\d+?"), next_id)
+Pat Regex("(;|$)") + Pat Test(
Insert Into(idlist2, next_id);
resval = Concat Items(idlist2, ", ");
)
);
resval;
),
Set Property("Multiple Response", Multiple Response(Separator(",")))
)
)Re: 다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.고마워요, 짐! REGEX 유무에 관계없이 일종의 루프가 트릭을 수행할 것이라고 생각했습니다. 당신이 잘되기를 바랍니다!
Re: 다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.Jarmo: 노력해 주셔서 감사합니다! 스크립팅 매뉴얼의 REGEX 및 Pat Match 섹션을 읽었으며 꼭 필요한 경우가 아니면 Pat Match를 시도하지 않기로 결정했습니다.
Re: 다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.hogi: 두 가지 제출물 모두 감사드립니다! 나는 이전에 Words()를 사용한 적이 있었지만 초기에 REGEX 솔루션을 추구해야 한다고 스스로 확신했기 때문에 그것에 대해 생각하지 않았습니다. 이 솔루션은 매우 우아합니다! Concat Items()에 대해 읽어야 합니다...
Jim/Jarmo/hogi: 커뮤니티의 글로벌 파워를 보여주셨습니다! 나는 지금 쿠알라룸푸르에 앉아 있다. 나는 당신이 잠에 들기 직전/이미 자고 있을 때 아침에 이것을 가장 먼저 게시했습니다. 늦은 오후까지 귀하로부터 해결책을 얻었습니다. 다시 감사합니다!
Re: 다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.@호기 썼다:
... 복잡한 분할 1초 ...
실제로 - 생각보다 덜 복잡합니다 
New Column( "IDs",
Character,
"Multiple Response",
Formula(
splitItems = Words( :Input, ";#" );
Concat Items( splitItems[2:: N Items( splitItems ):: 2], "," );
)
)
... Jmp의 다음 버전 중 하나를 사용하면 이 작업이 더욱 쉬워질 것입니다.
https://community.jmp.com/t5/JMP-Wish-List/new-slicing-options-for-matrices/idc-p/614326/highlight/true#M4057
Re: 다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.필요한 변경은 JMP가 다중 응답으로 인식하는 하나의 현재 구분 기호입니다. 이 경우 대체 기능도 잘 작동합니다.
Re: 다중 응답 분석을 활성화하려면 문자열에서 원하는 모든 요소를 추출하세요.?