여러 배열의 행 가져오기와 동일안녕하세요,
이것은 매우 기본적인 질문처럼 보이지만 좋은 답변을 찾지 못했기 때문에 잘못된 검색어를 사용하고 있는 것 같습니다.
처음에는 문자열(파일 경로) 목록을 만들고 문제 없이 순차적으로 사용할 수 있는 스크립트가 있습니다. 범위가 확장됨에 따라 이제 동시에 생성된 동일한 길이의 다른 두 목록에서 기준에 따라 필터링을 수행해야 합니다. 내 두뇌는 여전히 데이터 테이블에서 작동하며 데이터 테이블(또는 SQL) 형식에서는 이 작업을 수행하기가 쉽습니다. 숨겨진 데이터 테이블을 만드는 것은 실행 가능한 옵션이 될 수 있지만 다른 데이터 구조로 작업하고 다른 dt를 사용하도록 코드를 변경하는 것이 지저분해 보이는 것을 더 잘 이해하고 싶습니다.
이것은 연관 배열에 대한 응용 프로그램처럼 보이지만 배열을 올바르게 생성하는 데 어려움을 겪고 있으며 스크립팅 가이드와 스크립팅 인덱스가 조명되지 않았습니다. 누군가 올바른 방향으로 나를 가리켜 주거나 지금 하려는 일에 더 적합한 데이터 구조를 제안할 수 있습니까? 아니면 숨겨진 테이블이 실제로 최선의 선택일까요?
또한 이 예에는 세 개의 개별 목록이 있습니다. 내 현재 응용 프로그램에서 각 목록은 List_A[1]이 List_B[1]에 해당하는 자체 목록에 포함되어 있지만 부모 목록을 반복하고 있습니다.
감사합니다!
Names Default To Here( 1 );
//example data is in dt, my data isn't
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
//this is more or less the structure of the data that I have
sex_list = dt:sex << get values;
height_list = dt:height << get values;
weight_list = dt:weight << get values;
//this is what I would do if I had the data in a dt
output = dt:weight[dt << get rows where(and(:age == 13, :sex == "M"))];
show(output);
//how to do this with the data in a structure with no dt? what structure would be appropriate?
자동화 및 스크립팅Re: 여러 배열에 대한 행 가져오기와 동일합니다.JMP 데이터 테이블은 쿼리하기 쉽고 매우 빠르므로(쿼리에 따라 다름) 사적인 또는 보이지 않는 데이터 테이블.정말 연관 배열을 사용하려면 나이 == 13, 성별 == "M"을 나타내기 위해 "13_M"과 같은 고유 키를 상당히 많이 만들어야 할 것 같습니다.
Re: 여러 배열에 대한 행 가져오기와 동일합니다.목록 또는 행렬에서 항목을 찾는 loc() 함수. 연관 배열을 사용하여 여러 인덱스 목록을 교차합니다. Re: 두 목록(비공통 요소)을 빠르게 비교하는 방법은 무엇입니까?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
name_list = dt:name << get values;// a list
sex_list = dt:sex << get values;// a list
age_list = dt:age << get values;// a matrix
weight_list = dt:weight << get values;
age_rows = Loc( 13 <= age_list <= 14 );
sex_rows = Loc( sex_list, "M" );
// intersection of those https://community.jmp.com/t5/Discussions/Quick-way-to-compare-two-lists-and-identify-the-uncommon/m-p/5811
intersect = Associative Array( age_rows );// uses two associative arrays
intersect << intersect( Associative Array( sex_rows ) ); // perform the intersection
intersect = intersect << getkeys; // get the answers
For Each( {key}, intersect, Write( Eval Insert( "\!n^name_list[key]^ \!t^age_list[key]^ \!t^sex_list[key]^ \!t^weight_list[key]^" ) ) );
/*
JOHN 13 M 98
JOE 13 M 105
MICHAEL 13 M 95
DAVID 13 M 79
FREDERICK 14 M 93
ALFRED 14 M 99
HENRY 14 M 119
LEWIS 14 M 92
EDWARD 14 M 112
CHRIS 14 M 99
JEFFREY 14 M 113
*/Re: 여러 배열에 대한 행 가져오기와 동일합니다.Craige, Jarmo에게 감사합니다! 따라서 배열로 할 수 있지만 몇 단계가 필요하므로 JSL은 이와 같은 경우에 보이지 않는/개인 테이블을 사용하도록 더 설계된 것 같습니다(따라서 명확한 답을 찾지 못한 이유).