존재하지 않는 열을 포함할 수 있는 목록을 기반으로 열 하위 집합 만들기안녕하세요 사용자 여러분,
이 주제와 관련된 이전 토론을 읽었지만 모든 답변을 찾지 못했습니다.
주어진 열 목록을 기반으로 열 하위 집합을 만드는 방법을 알고 싶습니다. 주어진 목록의 열이 하위 집합을 원하는 데이터 테이블에 존재할 때 이 작업을 쉽게 수행할 수 있다는 것을 알고 있습니다.
내가 알고 싶은 것은 목록에 지정된 열이 존재하지 않는 경우 "잘못된 인수"에 대한 액세스 또는 평가에서 열을 찾을 수 없다는 오류가 발생하지 않도록 스크립트를 강력하게 만드는 방법입니다.
예를 들어, 아래 스크립트에서 열, 이름, 연령 및 키가 포함된 "Big Class.jmp"의 하위 집합을 생성할 수 있기를 원하지만, 열, 이름, 연령 및 키가 없기 때문에 스크립트가 그대로 작동하지 않습니다. 주어진 목록에 none이라는 기존 열이 있습니다.
코드 주위에 Try()를 넣으려고 했지만 성공하지 못했습니다.
cols_of_interest = {:name, :age, :height, :none};
show(cols_of_interest);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
big_class_cols = dt << Get Column Names();
show(big_class_cols);
subDt1 = dt << Subset(
Columns( cols_of_interest ),
Output Table Name( "Big Class 2" )
);
"
감사해요,
사이먼
데이터 접근데이터 혼합 및 정리Re: 존재하지 않는 열을 포함할 수 있는 목록을 기반으로 열 하위 집합 만들기매우 우아한 솔루션입니다. 잘 작동합니다.
고마워요 짐!Re: 존재하지 않는 열을 포함할 수 있는 목록을 기반으로 열 하위 집합 만들기<
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cols_of_interest = {name, age, height, none}; //names without scoping colon
AA1 = Associative Array( dt << Get Column Names() );
AA2 = Associative Array( cols_of_interest );
cols = AA2 << intersect( AA1 ) << get keys;
subDt1 = dt << Subset( Columns( cols ), Output Table Name( "Big Class 2" ) );
Re: 존재하지 않는 열을 포함할 수 있는 목록을 기반으로 열 하위 집합 만들기이를 처리하는 간단한 방법은 다음과 같습니다.단순히 cols_of_interest 목록의 각 열이 데이터 테이블에 있는지 확인하고, 그렇지 않은 경우 cols_of_interest 목록에서 해당 열을 제거합니다.
names default to here(1);
cols_of_interest = {:name, :age, :height, :none};
show(cols_of_interest);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For(i=nitems(cols_of_interest), i>=1, i--,
if(try(column(dt,char(cols_of_interest[i]))<<GET name=""></GET>