JMP 스크립팅에는 종종 데이터 열 개체 사용이 포함됩니다. 숫자 데이터 열에 대한 통계를 계산할 수 있습니다. 열 속성 또는 속성을 변경하려고 할 수 있습니다. 이러한 경우에는 인수로 제공 할 수 있도록 열에 대한 참조가 필요합니다. 참조를 얻거나 사용하는 방법에는 여러 가지가 있습니다. 불행히도, 우리가 놀랄 때까지 그것들은 어느 시점에 해당하는 것처럼 보일 수 있습니다. 과학적 이론은 시험 가능하다. 검정이 무효화 할 때까지 이론이 유지됩니다. 열 참조에 대한 몇 가지 이론을 테스트 해 봅시다.
나는 신장 JMP 샘플 데이터 폴더의 Big Class 데이터 테이블에있는 데이터 열 C : \ Program Files \ SAS \ JMPPRO \ 15 \ Samples \ Data 나의 경우에는. 시작하자.
Names Default To Here( 1 );
// open a data table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
우리의 첫 번째 테스트는 몇 가지 다른 형식의 열 참조를 사용합니다. 신장 .
// use a reference to a data column
sum = Col Sum( :height );
Show( sum );
sum = Col Sum( Column( "height" ) );
Show( sum );
sum = Col Sum( Column( 4 ) );
Show( sum );
sum = Col Sum( :Name( "height" ) );
Show( sum );
sum = Col Sum( As Column( "height" ) );
Show( sum );
좋아, 우리는 무엇을 얻었습니까?

매번 같은 결과. 그래서 제 이론은이 5 가지 다른 참고 문헌이 동등하다는 것입니다. 나의 첫 번째 시험은 나의 이론을 확인시켜 준다. 그러나 그것은 첫 번째 테스트입니다. 다른 테스트를 고안해 봅시다. 먼저 열 참조를 가져 와서 저장 한 다음 저장된 참조를 사용하여 동일한 통계를 계산해 봅시다.
// get a reference to a data column and then use it
col = Column( "height" );
sum = Col Sum( col );
Show( sum );
col = Column( 4 );
sum = Col Sum( col );
Show( sum );
col = :Name( "height" );
sum = Col Sum( col );
Show( sum );
col = As Column( "height" );
sum = Col Sum( col );
Show( sum );
첫 번째 형식의 참조는 포함하지 않았습니다. :신장 값이 표현식에 리턴되어 저장 되었기 때문에 열 = : 높이 누락 (".")! 그 결과는 내 이론을 돕지 않습니다! 우리는 나머지 시험에서 무엇을 얻었습니까?

잠깐만! 나는 단일 오류를 얻지 못했지만 매번 같은 결과를 얻지 못했습니다. 처음 두 결과는 정확하지만 마지막 두 결과는 틀립니다. (40 행이 있음에 유의하십시오. 신장 마지막 높이는 70입니다. 40 * 70 = 2800 그건 그렇고.) 내 이론을 한 번 더 시험해 보자. 다시 열 참조를 가져 와서 저장 한 다음이를 사용하여 메시지를 보내겠습니다.
// get a reference to a data column and then use it
col = Column( "height" );
type = col << Get Data Type;
Show( type );
col = Column( 4 );
type = col << Get Data Type;
Show( type );
col = :Name( "height" );
type = col << Get Data Type;
Show( type );
col = As Column( "height" );
type = col << Get Data Type;
Show( type );
여기에 처음 두 가지 방법으로 얻을 수있는 것이 있습니다.

처음 두 가지 방법이 예상대로 작동하는 것 같습니다. 세 번째 방법을 시도해 봅시다.
col = :Name( "height" );
type = col << Get Data Type;
Show( type );
이 방법은 효과가 없었습니다.

마지막 방법은 어떻습니까?
col = As Column( "height" );
type = col << Get Data Type;
Show( type );
마지막 시간과 같은 오류가 발생합니다.

내 이론을 개정 할 시간이다. (그리고 아마도 JMP 개발자들을 혼동 할 수도 있습니다.) 저의 이론은 이제
- :신장 , 열 ( "높이") , 기둥 (4) , : 이름 ( "높이") , 열로 ( "높이") 모든 작업 또는 유효한 열 참조로 작동합니다.
- 열 ( "높이") 과 기둥 (4) 열 참조를 반환하는 함수입니다.
- :신장 , : 이름 ( "높이") , 열로 ( "높이") 아르 아니 열 참조를 반환하는 함수
- 같이 기둥() 콜론의 별명 ( " : ") 범위 연산자 :신장 할당에 사용 된 경우 현재 행의 값을 반환합니다.
내 추천은 무엇입니까?
- 사용하다 :신장 , 열 ( "높이") , 기둥 (4) , : 이름 ( "높이") 또는 열로 ( "높이") 열 참조로.
- 사용하다 열 ( "높이") 또는 기둥 (4) 열 참조를 얻는 함수.
- 사용하지 마세요 :신장 , : 이름 ( "높이") 또는 열로 ( "높이") 열 참조를 얻으려면.
과학적 방법의 이러한 적응 (위배?)이 JMP 스크립팅에서 열 참조를 사용하는 방법을 명확히하는 데 도움이 되었기를 바랍니다. 권장 사항을 따르고 혼란과 좌절을 피하기를 바랍니다.
mark
코드를 실행할 때
names default to here(1);
// get a reference to a data column and then use it
col = Column( "height" );
sum = Col Sum( col );
Show( sum );
col = Column( 4 );
sum = Col Sum( col );
Show( sum );
col = :Name( "height" );
sum = Col Sum( col );
Show( sum );
col = As Column( "height" );
sum = Col Sum( col );
Show( sum );
JMP 15.1을 실행하면 결과가 나타나지 않습니다. 내가 얻는 것은 :
sum = 2502;
sum = 2502;
sum = .;
sum = .;
내가 무엇을 놓치고 있습니까?
난 당신이 아무것도 누락 생각하지 않습니다!
JMP Pro 15.1도 사용하고 있습니다. 코드를 테스트하기 전에 다시 시작했습니다. 그 외에는 경험이 어떻게 다른지 잘 모르겠습니다.
나의 이론에 대한 당신의 시험과 기여에 대한 지속적인 감사에 감사드립니다!