스크립팅 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 );
좋아, 우리는 무엇을 얻었습니까?

매번 같은 결과. 그래서 내 이론은 이 다섯 가지 다른 참조가 동등하다는 것입니다. 내 첫 번째 테스트는 내 이론을 확인합니다. 그러나 이것은 첫 번째 테스트일 뿐입니다. 다른 테스트를 고안해 봅시다. 먼저 열 참조를 가져와서 저장한 다음 저장된 참조를 사용하여 동일한 통계를 계산해 보겠습니다.
// 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 );
참조의 첫 번째 형식을 포함하지 않았음을 참고하십시오. :키 값이 반환되고 표현식에 저장되기 때문에 열 = :높이 누락 (".")! 그 결과는 내 이론에 도움이 되지 않습니다! 나머지 테스트에서 무엇을 얻었습니까?

잠깐 기다려요! 단일 오류가 발생하지 않았지만 매번 동일한 결과를 얻지 못했습니다. 처음 두 결과는 맞지만 마지막 두 결과는 잘못되었습니다. 내 이론을 한 번 더 테스트해 봅시다. 다시 열 참조를 가져와서 저장한 다음 메시지를 보내는 데 사용하겠습니다.
// 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_Bailey
귀하의 코드를 실행하고 다른 결과를 받았습니다.내가 달릴 때:
// 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 );
나는 얻다:
sum = 2502;
sum = 2502;
sum = .;
sum = .;