안녕,
미리 필터링된 테이블에서 PM#=2 및 Logistic#=1인 특정 행을 선택하려고 여러 가지 방법을 시도했지만 'Send expects scriptable object' 메시지, 'Scriptable[]' 또는 스크립트 종료 또는 무한 루프.누군가 내가 행 선택을 프로그래밍할 수 없는 구문에 대해 부적절한 것을 도와줄 수 있습니까?감사해요!
lamstationfile=Pick File("choose file","$Documents" );
dt=Open(lamstationfile,
Import Settings(End Of Field( Tab ),Scan Whole File( 1 ), Column Names Start(7 ),Data Starts( 8),));
dt = Current Data Table();
//find data rows
w=NRow(dt);
dt<<SELECT where="">(d-1));
dt2=dt<<SUBSET>(d-1))<<DELETE rows=""></DELETE></SUBSET></SELECT>
나는 그렇게 생각했다 @uday_guntupalli 코드는 작동해야 하지만 13.2.1에서는 작동하지 않습니다(이상합니다).그러나 Column() 대신 As Column()을 사용하면 특정 코드가 작동할 수 있습니다.
Names Default To Here( 1 );
dt3 = Open( "$SAMPLE_DATA/Big Class.jmp" );
logis = "55";
clos = "Height";
dt3 << Select Where( As Column( dt3, clos ) == Num( logis ) );
dt3 <Re: Scriptable[] 또는 '전송에 스크립트 가능한 개체가 필요합니다.'죄송합니다. 더 명확해야했습니다.내가 겪고있는 문제는 세 번째 데이터 테이블 dt3을 만든 후 코드가 끝나는 것입니다. 코드의 마지막 활성 라인 이전의 모든 것이 잘 작동합니다[첫 번째 데이터 테이블 dt에서 행과 열 가져오기, 입력 PM#=2 및 Logistic#=1 설정은 괜찮습니다].Logistic# =1 인 dt3에서 여러 행을 선택할 수 없습니다.
아래 발췌된 코드에 나와 있는 것처럼 여러 가지 방법을 시도했지만 'Scriptable[]' 메모 또는 'Send expects scriptable object' 오류로 코드가 종료됩니다.아래 코드에서 제대로 실행되지 않는 부분이 어디인지 잘 모르겠습니다.
<SPAN class="token comment">//dt3<<GET rows="" where="">
dt3<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN>Selet Where<SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">:</SPAN><SPAN class="token function">Column</SPAN><SPAN class="token punctuation">(</SPAN> dt3<SPAN class="token punctuation">,</SPAN> clos <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator">==</SPAN> <SPAN class="token function">Num</SPAN><SPAN class="token punctuation">(</SPAN> logis <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN> <SPAN class="token comment">//Method#2</SPAN>
<SPAN class="token comment">//For(i=1, i=NRows(dt3), i++, //Method#3</SPAN>
<SPAN class="token comment">//If( Column( dt3, clos )[i] == Num( logis ),</SPAN>
<SPAN class="token comment">// Column( dt3, clos )[i] << Set Selected( 1 )); );</SPAN>
<SPAN class="token comment">//For Each Row(If( :Column( dt3, clos ) == Num( logis ), :Column( dt3, clos ) << Set //Selected(1)); //Method#4</SPAN></GET></SPAN>
Re: Scriptable[] 또는 '전송에 스크립트 가능한 개체가 필요합니다.'다음은 "NUM_DATA_ROWS개:"를 찾은 후 행을 선택하여 데이터 테이블의 첫 번째 문제를 다루는 스크립트입니다.
lamstationfile = Pick File( "choose file", "$Documents" );
dt = Open( lamstationfile, Import Settings( End Of Field( Tab ),
Scan Whole File( 1 ), Column Names Start( 7 ), Data Starts( 8 ), ) );
dt = Current Data Table();
//find data rows
w = N Row( dt );
dt << Select Where( :Time == "NUM_DATA_ROWS" ) << Label( 1 );
d = dt << Get Selected Rows;
Show( d );
// A matrix is returned from << Get Selected Rows, so you need to reference d[1]
dt << Select Where( Row() > (d[1] - 1) );
dt2 = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
dt /*<< Select Where( Row() > (d - 1) )*/ << Delete Rows;
// Change first two columns to numeric data
Column( dt, 1 ) << Data Type( Numeric );
Column( dt, 1 ) << Modeling Type( "Continuous" );
Column( dt, 1 ) << format("hr:m:s");
Column( dt, 2 ) << Data Type( Numeric );
Column( dt, 2 ) << Modeling Type( "Continuous" );
열 선택 및 부분 집합화와 관련하여 자체 선택 도구를 구축하는 대신 기본 제공 열 선택 도구인 "열 뷰어"를 사용하는 것이 좋습니다.
dt << Columns Viewer;
Re: Scriptable[] 또는 '전송에 스크립트 가능한 개체가 필요합니다.'죄송합니다.이제 데이터가 적절하게 첨부되었습니다.
Re: Scriptable[] 또는 '전송에 스크립트 가능한 개체가 필요합니다.'@asdf :
첨부 파일(.zip) 파일이 비어 있으므로 코드를 테스트하고 문제 해결을 위해 오류를 확인하기 위한 데이터가 제공되지 않았습니다.
작업 중인 실제 데이터가 없는 경우 - 여기에서 이 예를 살펴보겠습니다.
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
dt << Select Where(:Airline == "Delta" & :Event == "Arrive");
보시다시피 - 서로 다른 두 열에서 서로 다른 두 조건이 충족되는 행을 선택할 수 있습니다.
귀하의 경우 - 경우 PM#=2 및 Logistic#=1은 2개의 다른 테이블을 참조합니다. 그런 다음 공통 열을 기반으로 테이블을 조인해야 합니다.
그렇지 않은 경우 실제 샘플 데이터를 제공하십시오.