데이터 테이블 열의 이름을 바꾸기 위한 연관 배열안녕하세요 JMP 커뮤니티,
열이 많은 데이터 테이블(dt1)이 있는데 이름을 바꾸고 싶습니다. 이상한 이름으로 코딩되어 있습니다. 그러나 두 개의 열 :Name 및 :Code만 있는 다른 데이터 테이블(dt2)이 있습니다. dt2의 각 행에는 코드와 관련된 의미 있는 이름이 있습니다.
for 루프를 사용하여 이 작업을 수행하는 방법을 알고 있지만 새로운 것을 배우려고 노력하고 있으며 연관 배열을 통해 이를 수행하기를 희망합니다. 이 스레드에 있는 것과 비슷한 것 여기 . 다음과 같이 할 수 있다고 생각했습니다.
Names Default To Here( 1 );
dt = Data Table( "dt1" );
dtnames = Data Table( "dt2" );
aa_name_code = Associative Array(
Column( dtnames, "Name" ) << Get Values,
Column( dtnames, "Code" ) << Get Values
);
aavalues = aa_name_code << Get Values;
aakeys = aa_name_code << Get Keys;
Eval( Eval Expr( Column(dt,Expr( aavalues )))) << Set Name( Expr( aakeys ) ) ) );
그러나 불행히도 이것은 작동하지 않습니다. 내가 어떻게 행동하는지가 아니야 생각 연관 배열이 동작했습니다.
다시 말하지만, 저는 새로운 것을 시도하고 배우고 새로운 JSL 명령으로 더 나아지기를 원합니다. 이것이 제가 Associative Array를 통해 작업하고 싶은 이유입니다. 가능하지 않다면 무차별 대입 For-Loop 방식으로 할 것입니다.
이에 대한 의견과 의견을 보내주셔서 감사합니다!,
DS
데이터 테이블스크립팅Re: 데이터 테이블 열의 이름을 바꾸기 위한 연관 배열안녕 @David_Burnham ,
예, 귀하의 예를 따르고 하드 코딩을 이해했습니다. 이름 및 코드 열의 다른 테이블로 작업할 때 열 이름을 설정할 때 일치하는 키에 올바른 값을 적용하도록 연관 배열(참고: 올바른 순서여야 함)을 쉽게 만들 수 있습니다. 나는 그것을 실행했고 완벽하게 작동했습니다. 다시 한 번 도움을 주셔서 감사합니다!
DS
Re: 데이터 테이블 열의 이름을 바꾸기 위한 연관 배열확실히 하기 위해 배열 내용을 하드코딩하여 작동하는 예제를 만들었습니다. 별도의 테이블에서 키와 값을 채우는 것이 여전히 의미가 있습니다.또한 Evals, Expr 등이 필요하지 않았다는 점에 유의하십시오. 행운을 빕니다.
Re: 데이터 테이블 열의 이름을 바꾸기 위한 연관 배열안녕 @David_Burnham ,
의견을 보내주셔서 감사합니다. 분명히 연관 배열을 더 많이 읽어야 합니다. 나는 For Loops를 별로 신경쓰지 않지만 더 우아한 방식으로 이름 바꾸기를 코딩하고 싶었습니다. 다른 스레드에 대한 링크는 다른 열의 숫자 항목을 기반으로 열 값을 재정렬하는 매우 우아한 솔루션이었습니다. 해당 스크립트에서 연관 배열이 작동하는 방식은 테이블 열에 대해 작동할 것이라고 생각했지만 분명히 그렇지 않습니다. 이전에 목록 {...}를 사용하여 For 루프로 열 이름 바꾸기를 수행했지만 루프 없이 다른 방법을 시도하려고 했습니다. 그러나 나는 당신이 제시한 연관 배열 방법을 좋아하고 목록을 작성하는 대신 그렇게 할 것입니다.
첫 번째 데이터 테이블의 열 이름 목록과 두 번째 데이터 테이블의 연관 배열을 사용하여 연관 배열로 인해 이름을 쉽게 재할당할 수 있다고 생각한 것 같습니다. 열에 대한 "재코딩" 기능과 비슷합니다. 이름.
어쨌든 열 이름을 바꾸기 위해 연관 배열을 사용하는 것에 대한 제 질문에 대한 답장과 해결책에 감사드립니다. 데이터로 돌아갈 시간입니다!
감사해요!,
DS
Re: 데이터 테이블 열의 이름을 바꾸기 위한 연관 배열관련 배열과 for-loop를 사용하는 것은 상호 배타적이지 않습니다.많은 사람들이 for-loops를 피하고 싶어한다는 것을 알고 있지만 결국에는 테이블의 열을 반복하고 싶고 for-loops는 반복을 수행하도록 설계되었습니다.
namesDefaultToHere(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
arr = [=>];
arr["name"] = "first name";
arr["age"] = "age";
arr["sex"] = "gender";
arr["height"] = "height (inches)";
arr["weight"] = "weight (lbs)";
for (i=1,i<=ncols(dt),i++,
cname = column(i)<<GETNAME></GETNAME>