こんにちは、
事前にフィルタリングされたテーブルで PM#=2 および Logistic#=1 の特定の行を選択しようと多くの方法を試しましたが、「Send Expects scriptable object」メッセージ、「Scriptable[]」、または「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[] または '送信にはスクリプト可能なオブジェクトが必要です'申し訳ありませんが、もっと明確にする必要がありました。私が抱えている問題は、3 番目のデータ テーブル 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");
ご覧のとおり、2 つの異なる列で 2 つの異なる条件が満たされる行を選択できます。
あなたの場合 - もしPM#=2 と Logistic#=1 は 2 つの異なるテーブルを参照します。その場合、目的のために共通の列に基づいてテーブルを結合する必要があります。
どちらでもない場合は、実際のサンプル データを提供してください。