JSL: 데이터 테이블 열의 고유 값 가져오기안녕,
현재 요약 명령을 사용하여 데이터 테이블 열의 고유한 값을 가져오는데, 제 생각에는 간단한 작업을 수행하기에는 너무 복잡합니다. 데이터 테이블 열이나 벡터에 대해 작동하는 더 간단한 명령이 있어야 할 것 같은데 찾을 수 없습니다. 내가 맞나요?
내 현재 코드는 다음과 같습니다
// sample data set:
dt = New Table( "dt" );
dt:"Column 1" << setvalues( [1, 1, 2, 7, 7, 4, 5, 1, 5] );
// use summary to get unique values:
dt_sum = dt << summary( group( :Column 1 ), N, outputtablename( "dt_sum" ) );
unique_values = dt_sum:"Column 1" << getvalues;
달라
Re: JSL: 고유한 값을 가져옵니다.안녕하세요, 동일한 키가 있지만 다른 JMP 테이블에 있는 행을 선택하거나 필터링하기 위해 배열의 키를 사용하는 접근 방식은 무엇입니까? 테이블이 두 개 있어요. 그 중 하나는 화학 테스트용 샘플 ID를 다양한 요인 설정(온도, 시간, 연구 번호 등)에 매핑합니다. 배열에서 샘플 ID를 성공적으로 가져왔습니다. (죄송합니다. 저는 이 분야에 완전히 초보자입니다.)
smplID = Associative array(:sampleid) << Get Keys;
이제 이 키를 사용하여 두 번째 테이블(내 응답이 있는 곳)에서 행을 선택하고, 행 선택을 반전하고, 행을 삭제하려고 합니다. 아마도 아래의 해결책은 여기에 설명된 대로 시작하는 것이 더 적합합니다. ?
Summarize(dt, smpleID = by(:sampleid));
아니면 어쩌면 이 접근법 바람직하다?
dt << Summary (Group ( :sampleid ), Frequ( "None" ), Weight( "None" );
어쨌든, 제가 정말로 알고 싶은 것은 데이터 분석을 더 진행하기 전에 이러한 접근 방식을 사용하여 필요하지 않은 행에 대한 데이터 테이블을 효과적으로 정리할 수 있는 방법입니다.
편집: 논의 및 해결 여기 .
Re: JSL: 데이터 테이블 열의 고유 값을 가져옵니다.요약해 보세요 ...
요약하면 더 많은 일을 할 수 있습니다...스크립팅 문서를 참조하세요.
몇 가지 단점이 있습니다.
- 요약된 열이 숫자일 수 있더라도 반환된 목록에는 문자 값이 포함됩니다.
- 1과 관련하여 숫자 값의 정밀도는 열 너비에 따라 잘립니다.
// sample data set:
dt = newtable("dt");
dt:"Column 1" << setvalues([1, 1, 2, 7, 7, 4, 5, 1, 5]); summarize(unique_values=by(Column 1));
show(unique_values)
하지만 ... 단점에 대한 해결 방법은 다음과 같습니다.
summarize(unique_values=by(Column 1), unique_numeric_values=(max(Column 1)));
show(unique_values, unique_numeric_values)
Re: JSL: 고유한 값 얻기다음 예를 살펴보세요.
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
values = dt:age << Get Values;
array = Associative Array( values );
array << Get Keys;
Re: JSL: 고유한 값 가져오기Summarize()를 시도해 볼 수 있고, 반환된 목록을 반복한 다음 num() 함수를 사용하여 문자열 값을 숫자형으로 다시 변경할 수 있습니다.
수식을 사용하는 새 열을 만들 수 있습니다.
:변수 * 100
그런 다음 연관 배열에서 나오는 데이터를 변환합니다.
값을 문자로 변환하여 새 열을 만들 수 있습니다.Re: JSL: 고유한 값 가져오기@Mark_Bailey 님 , 훌륭하고 간결한 솔루션을 공유해 주셔서 감사합니다.
대부분의 경우 작동하지만 다음의 경우에는 작동하지 않습니다.
values = {0.111, 0.222, 0.333}; // This is actually something like: values = Column(SomeList[1]) << Get Keys
N Items(Associative Array(values)) // gives 1
JMP는 연관 배열을 생성할 때 소수점 이하 자릿수를 무시합니다. (JMP 12 사용 시)
연관 배열을 사용해서 N개의 항목이 1개 대신 3개를 반환하도록 수정하려면 어떻게 해야 합니까?
Re: JSL: 고유한 값 가져오기도와주셔서 감사합니다! 요약 기능이 잘 작동합니다!
달라Re: JSL: 고유한 값 가져오기또한:
unique values = Associative Array( col ) << Get Keys
Re: JSL: 고유한 값 가져오기데이터를 데이터 테이블 형식으로 유지하려는 경우 요약 기능이 효과적입니다.
@마크_베일리 가 제안한 연관 배열은 목록에서 작업하려는 경우 적합합니다.Re: JSL: 데이터 테이블 열의 고유 값 가져오기초보자(저) 수준의 JMP 사용자를 위한 요약 솔루션을 제안합니다.
이 예제에서는 고객 주문 목록에서 고유한 완제품 목록을 가져오려고 합니다. 테이블을 연결하지 않고 출력 테이블에 이름을 지정하겠습니다.
원본 데이터 테이블에서 테이블 -> 요약으로 이동합니다.

선택한 열에서 완료된 작업을 오른쪽의 그룹으로 끌어다 놓습니다.
출력 테이블에 이름을 지정합니다. 이 경우 UniqueFG입니다.
원본 데이터 표에 대한 링크 선택을 해제합니다.
작업 확인을 클릭합니다.

결과 데이터 테이블은 모든 고유한 FG와 행 수의 목록입니다.
소스 스크립트 편집을 클릭하세요.
이는 다음과 같이 보일 것입니다.
Data Table( "Test" ) <<
Summary(
Group( :Finished Good ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "UniqueFG" )
)
해당 코드를 복사하세요.
원본 데이터 테이블에 새 스크립트를 만들고 코드를 붙여넣으세요. 코드를 약간 수정하여 유연성과 확장성을 높였고, 아래 메모에 주석을 달았습니다.
//Creates a list of unique FG #s to feed to SAP to get unit weights and carton quantities
Names Default to Here(1);
dt = current data table();
dt <<
Summary(
Group( :Finished Good ), //this is the column from which you want unique values
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ), //this turns off table linking
output table name( "UniqueFG" ) // this is the name of the new datatable
)
구하다.
이 접근 방식이나 코드 구조가 좋은지/좋지 않은지 알려주세요. 감사합니다!