다른 열에 나타나는 변수의 순서를 기반으로 열을 만들어야 합니다.안녕하세요 여러분,
다음을 기반으로 열을 만들고 싶습니다. :클라이언트_ID 그리고 몇 번(시퀀스의 수는 1개로만 계산됩니다. :논평 열) 데이터 세트에 표시됩니다. 내 요구 사항은 다음과 같습니다 최종 요구사항 그리고 다음을 가지게 되어 기쁠 것입니다: 필수 열 1 또한. 데이터를 다시 정렬/정렬할 수 없습니다.
도움 좀 주세요.
많은 감사를 드립니다. -HSS

데이터 혼합 및 정리품질 및 프로세스 엔지니어링Re: 다른 열에 나타나는 변수의 순서를 기반으로 열을 만들어야 합니다.SQL 쿼리 사용(특히 GROUP_CONCAT ) 또는 JMP의 다양한 표 작업(분할, 전치, 텍스트를 열로, 열 결합, 다시 결합)이 공식보다 쉽고 빠를 수 있지만 예를 들어 다음과 같이 공식을 사용하여 수행할 수 있습니다. 위치() 그리고 다른 열의 인덱싱.
편집: 대화형 방법을 추가했습니다.
첫 번째 분할 데이터:

다음으로 분할 데이터를 전치합니다.

전치된 데이터에서 먼저 텍스트를 열에 사용하여 Req2와 Region을 서로 분리합니다.

그런 다음 열 결합을 사용하여 행 열을 결합합니다.

불필요한 열의 이름을 바꾸고 제거하면 다음과 같이 끝납니다.

이것을 원본 데이터와 결합하세요2


추가 열을 제거하면 필요한 것을 얻을 수 있습니다.
강화된 로그에는 스크립트가 준비되어 있을 수 있지만 약간 정리해야 할 수도 있습니다.

Re: 다른 열에 나타나는 변수의 순서를 기반으로 열을 만들어야 합니다.안녕하세요 여러분,
추가 요구 사항이 있습니다. 열을 하나 더 추가해야 합니다. :요구_3 , 모든 텍스트는 :그룹 결합되어 저장됩니다. :그룹 텍스트는 최대 2줄까지 가능합니다. 구분 기호는 무엇이든 될 수 있습니다.
문제는 결합해야 할 셀 수가 고정되어 있지 않고 열의 값에 따라 다르다는 것입니다. :요구_1.
"Req_3"이 필요합니다.
어떤 도움이라도 감사합니다.

Re: 다른 열에 나타나는 변수의 순서를 기반으로 열을 만들어야 합니다.@jthi 도움을 주셔서 감사합니다.
나는 이 방향으로 일할 것이다.
Re: 다른 열에 나타나는 변수의 순서를 기반으로 열을 만들어야 합니다.가장 쉬운 방법은 새 열을 만든 다음 :Client_ID(원래 수식) 대신 그룹화로 사용하는 것입니다.

Col Cumulative Sum(:"Concatenate[Region,Client_ID]"n != Lag(:"Concatenate[Region,Client_ID]"n), :"Concatenate[Region,Client_ID]"n)
그렇지 않으면 누적 합계로 합산되는 부분이 매우 빠르게 더 복잡해집니다(이보다 쉬운 것이 있을 수 있지만 이는 :Region 변경에 대한 잘못된 값을 처리해야 함).
Col Cumulative Sum(
If(Row() == Col Minimum(Row(), :Client_ID, :Region),
1
,
:Client_ID != Lag(:Client_ID)
)
, :Client_ID, :Region
)
Re: 다른 열에 나타나는 변수의 순서를 기반으로 열을 만들어야 합니다.@jthi Col Cumulative Sum은 작동하지만 그룹화 변수:Region을 사용하여 루프/시작점의 올바른 초기화를 찾을 수 없습니다.
다른 제안이 있나요?
감사해요
Col 누적 합계( :Client_ID != Lag( :Client_ID ) & :Region == Lag( :Region ), :Client_ID )
Re: 다른 열에 나타나는 변수의 순서를 기반으로 열을 만들어야 합니다.연관 배열을 이와 같이 사용하려면 먼저 새로운 "그룹화" 열을 만들어야 합니다. 여러 그룹화 열을 사용하면 Col Cumulative Sum을 사용하는 것이 더 쉬울 수 있습니다(항상 더 쉬울 수 있습니다. 방금 생각해낸 것입니다). 올바른 비교와 그룹화를 파악해야 합니다.
Col Cumulative Sum(:Client_ID != Lag(:Client_ID), :Client_ID)
Re: 다른 열에 나타나는 변수의 순서를 기반으로 열을 만들어야 합니다.안녕 @jthi , 다른 열을 사용하여 "Associated Array"에서도 그룹화를 수행할 수 있습니까? 이 같은 ? "연결된 배열(:클라이언트_ID, :지역)" 내 데이터 세트에 700,000개가 넘는 행이 있는데 Associate 명령이 계속 작동할까요? 그룹화할 수 있는 경우 :지역 , 여전히 10000개 이상의 행이 있을 수 있습니다. 어쨌든 나는 이것을 시도해 볼 것입니다.
도움을 주셔서 감사합니다. 감사합니다 - HSS
Re: 다른 열에 나타나는 변수의 순서를 기반으로 열을 만들어야 합니다.연관 배열을 사용하여 값을 저장한 다음 필요에 따라 늘리면 여기에서 작동합니다.
필수 열 1의 공식:
As Constant(
aa = Associative Array(:Client_ID);
aa = Associative Array(aa << get keys, Repeat(0, N Items(aa)));
retval = 1;
);
If(:Client_ID != Lag(:Client_ID),
aa[:Client_ID]++;
);
aa[:Client_ID];
최종 요구 사항:
Eval Insert("^:Client_ID^_^:Required Column 2^");
예제 스크립트(다른 열 이름 사용):
Names Default To Here(1);
dt = Open("$DOWNLOADS/data.jmp");
dt << New Column("Required Column 2", Numeric, Ordinal, Formula(
As Constant(
aa = Associative Array(:Client_ID);
aa = Associative Array(aa << get keys, Repeat(0, N Items(aa)));
retval = 1;
);
If(:Client_ID != Lag(:Client_ID),
aa[:Client_ID]++;
);
aa[:Client_ID];
));
dt << New Column("Final Requirement 2", Character, Ordinal, Formula(
Eval Insert("^:Client_ID^_^:Required Column 2^");
));
