Je pensais que @uday_guntupalli le code devrait fonctionner, mais dans 13.2.1, ce ne serait pas le cas (étrange).Cependant, utiliser As Column() au lieu de Column() a permis à votre code spécifique de fonctionner
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[] ou 'envoyer attend un objet scriptable'Désolé, j'aurais dû être plus clair.Le problème que je rencontre concerne la fin de mon code après avoir créé une troisième table de données dt3. Tout avant la dernière ligne de code active fonctionne correctement [obtenir des lignes et des colonnes dans la première table de données dt, définir les entrées PM#=2 et Logistic#=1 sont très bien].Je ne peux tout simplement pas sélectionner plusieurs lignes dans dt3 où Logistic# =1 .
J'ai essayé plusieurs méthodes différentes, comme indiqué dans l'extrait de code ci-dessous, mais le code se termine par la note « Scriptable[] » ou l'erreur « Envoyer attend un objet scriptable ».Je ne sais pas où dans le code ci-dessous l'empêche de fonctionner correctement.
<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[] ou 'envoyer attend un objet scriptable'Voici un script qui couvre le premier problème de votre table de données, en sélectionnant la ligne après avoir trouvé "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" );
Concernant votre sélection de colonnes puis votre sous-ensemble, je vous suggère d'utiliser l'outil de sélection de colonnes intégré, "Columns Viewer", plutôt que de créer votre propre outil de sélection.
dt << Columns Viewer;
Re : Scriptable[] ou 'envoyer attend un objet scriptable'Désolé.Les données sont désormais correctement jointes.
Re : Scriptable[] ou 'envoyer attend un objet scriptable'@asdf :
Le fichier de pièce jointe (.zip) est vide. Vos données n'ont donc pas été fournies pour tester votre code et voir votre erreur pour dépanner.
En l'absence des données réelles avec lesquelles vous travaillez, regardons ici cet exemple.
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
dt << Select Where(:Airline == "Delta" & :Event == "Arrive");
Comme vous pouvez le voir, vous pouvez sélectionner des lignes dans lesquelles deux conditions différentes sur deux colonnes différentes sont remplies.
Dans votre cas - si le PM#=2 et Logistic#=1 font référence à 2 tables différentes - vous devez alors joindre les tables en fonction de colonnes communes pour ce que vous recherchez.
Si ce n'est pas le cas, veuillez fournir des exemples de données réelles.