JSL 팁 : 목록에서 고유 한 값 찾기참석에 대한 위대한 일 중 하나 JMP 디스커버리 서밋 개발자는 매우 다양한 애플리케이션을 사용하는 사람들로부터 질문과 제안을 듣고 있습니다. JMP . 하나의 JSL 스크립팅 언어 (JSL) 질문이 세 번 나왔으므로 공유 할 가치가 있습니다. 질문은 "목록에서 중복 항목을 어떻게 제거합니까?"입니다.
즉, 목록이 주어지면 { "좋아", "싫어함", "좋아요", "중립적 인", "싫어하는", "좋아요"} 결과는 다음과 같아야한다. { "싫어함", "좋아요", "중립적 인"} (중요하지 않은 순서).
JSL에서 그렇게 할 수있는 합리적인 방법이 많이 있습니다 (다른 아이디어는 환영합니다). 그러나 내가 생각할 수있는 가장 간단한 방법은 연관 배열 . 연관 배열은 키가 고유 한 키 - 값 쌍의 모음입니다. 동일한 키와 함께 둘 이상의 키 - 값 쌍을 추가하면 그 중 하나만 유지됩니다 (마지막 키 - 값 쌍). 값에 대해 신경 쓰지 않으면 연관 배열이 사실상 고유 키 집합입니다.
JSL에서는 여러 가지 방법으로 연관 배열을 만들 수 있지만 여기서는 관심 목록 중 하나만 목록에서 만드는 것입니다. 결과 연관 배열은 목록 값을 키로 취급하고 고유 키만 저장합니다. 그런 다음 연관 배열에 키 목록을 요청할 수 있습니다.
답변 = { "처럼" , "싫어함" , "처럼" , "중립국" , "싫어함" , "처럼" } ;
답변 세트 = 연관 배열 ( 답변 ) ;
독특한 답변 = 답변 세트 << 열쇠 얻기 ;
결과 : { "싫어함", "좋아요", "중립적 인"}
JMP에서 연관 배열을 발견하지 못했다면 JSL 스크립팅 색인에서 문서와 예제를 탐색하십시오.
자, 이제 네 차례 야. 목록에서 고유 한 값을 얻을 수있는 다른 방법은 뭔가? 나는 Summarize () 함수를 사용하여 생각할 수있다.
James Cultra는 다음과 같이 썼습니다 :이 방법은 행렬에서 더 잘 작동합니다 ... 제임스 크리 트라 쓴 :
이 방법은 연관 배열 함수가 행렬의 값을 반올림하는 것처럼 보이므로 행렬에 대해 더 잘 작동합니다 (따라서 고유 목록이 행렬의 실제 값과 일치하지 않습니다)
Xan Gregg는 다음과 같이 썼습니다. 잔 그레그 쓴 :
첫 번째 및 다음 메시지와 함께 연관 배열을 반복하는 경우 항목은 정렬 된 키의 순서로 반환됩니다. 값이 고유하면 키로 사용할 수 있지만 그렇지 않으면 명시 적 정렬이 필요합니다. 시도해 볼 수도 있습니다. JMP 커뮤니티 포럼 후자에 대한 아이디어.
에릭 위트 리 (Eric Wittry)는 다음과 같이 썼다 : 키 => 값 쌍이 있다면, 나는 완 ... 에릭 위트 리 쓴 :
key => value 쌍이 있고 값을 정렬하고 키를 정렬 된 값 (* 정렬 된 값을 기준으로)으로 반환하려면 JMP에서 어떻게 처리해야합니까? 감사합니다 Eric
Leighton Spadone은 다음을 작성했습니다. // JSL Matrix 함수를 사용하여 다시 ... 레이튼 스파 돈 쓴 :
// 목록을 고유 값으로 줄이기 위해 사용되는 JSL 행렬 함수.
// 중복 값이있는 목록;
답변 = { "like", "dislike", "like", "neutral", "dislike", "like"};
// 첫 번째 발생의 경우 1을, 중복의 경우 0을 사용하여 디자인 행렬을 단일 행으로 축소합니다.
DesignMatrix = VMax (디자인 (답변, 답변));
// 결과 : DesignMatrix = [1 1 0 1 0 0];
// 하위 집합 고유 값에 대한 응답 목록입니다.
UniqueAnswers = answers [Loc (DesignMatrix)];
// 결과 : UniqueAnsers = { "dislike", "like", "neutral"};
Pmroz는 다음과 같이 썼습니다. 목록에서 고유 한 값을 찾지 못했습니다. Pmroz 쓴 :
목록에서 고유 한 값을 찾는 것이 나타났습니다.
JMP 토론 포럼에서 잠깐. Â 다음은 함수입니다.
내가 사용하는 기술은 Xan이 보여준 기술을 기반으로합니다.
/ *
함수 이름 : get_unique_values
설명 : 목록에서 고유 한 값을 찾습니다.
연관 배열 사용
인수 :
in_list   목록 고유 한 값을 얻기위한 목록
* /
Get_unique_values = 기능 ( { in_list } , { 기본 로컬 } ,
    tmp = [ => 0 ] ;
에 삽입 ( tmp, in_list ) ;
<< 키를 얻으십시오;
) ;
Guillaume은 다음과 같이 썼습니다 : 또 다른 방법은 루프 문을 사용하는 것입니다 ... 기ume 쓴 :
또 다른 방법은 루프 문과 Loc () 함수를 사용하여 고유 한 값을 찾는 것입니다
답변 = { "like", "dislike", "like", "neutral", "dislike", "like"};
unique_answers = List ();
(i = 1, i <= Nitems (answers), i ++,
(Nrows (Loc (unique_answers, answers [i])) == 0이면,
InsertInto (unique_answers, answers [i])
);
);
Michael Crotty는 다음과 같이 썼습니다. 또 다른 내장 된 JSL 기능은 ... 마이클 크로티 쓴 :
이 문제를 해결할 수있는 또 다른 내장 된 JSL 함수는 Design () 함수입니다.
답변 = { "like", "dislike", "like", "neutral", "dislike", "like"};
디자인 (대답, <수준) [2]