Re: Sélectionnez un nombre dynamique de lignes avec JSL, en sélectionnant les lignes qui remplissent une conditionJ'ai essayé quelque chose comme ça et j'ai eu une erreur Colonne non trouvée {1} dans l'accès ou l'évaluation de 'Argument incorrect'
Ce que j'imagine est l'argument à l'intérieur Sélectionner() dans Joindre() .
Je pensais que je pourrais peut-être assigner un vecteur de colonnes à une variable et utiliser la variable comme argument dans Select ().
// Get a list of the column names
colList = TRANSPOSE << Get Column Names();
// Starting with column 3, select
For(i=3,i<= N Cols( TRANSPOSE ), i++, COLUMN( TRANSPOSE , colList[i]) << Set Selected(1) ) ;
// Assign those selected columns to a variable
Select_cols = TRANSPOSE << Get Selected Columns();
//then feed that variable into the Select() withing Join()
<SPAN class="token comment">// JOIN</SPAN>
DT <SPAN class="token operator">=</SPAN> <SPAN class="token function">Data Table</SPAN><SPAN class="token punctuation">(</SPAN> TRANSPOSE <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Join</SPAN><SPAN class="token punctuation">(</SPAN>
With<SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Data Table</SPAN><SPAN class="token punctuation">(</SPAN> CATEGORY_TABLE <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Select<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Forecast Material <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
SelectWith<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Category <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Select<SPAN class="token punctuation">(</SPAN> Select_cols <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> /// was Select<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Row <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>Row <SPAN class="token number">2</SPAN> <SPAN class="token punctuation">)</SPAN>
By Matching Columns<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Label <SPAN class="token operator">=</SPAN> <SPAN class="token punctuation">:</SPAN>Category <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Drop multiples<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">0</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Include Nonmatches<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">0</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Preserve main table order<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">1</SPAN> <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Sélectionnez un nombre dynamique de colonnes avec JSL, en sélectionnant les colonnes qui remplissent une conditionhttps://www.jmp.com/support/help/14-2/use-set-selected-tosselect-columns.shtml
Quel est le meilleur moyen de réécrire quelque chose comme ça?
L'intention est que DT soit une jointure de TRANSPOSE et CATEGORY_TABLE.
- CATEGORY_TABLE est une table à une colonne avec la colonne Catégorie
- TRANSPOSE est le résultat d'une transposition de données
Le truc, c'est que TRANSPOSE n'a pas toujours le même nombre de colonnes. De manière confuse, la sortie de la fonction transpose nomme les colonnes supplémentaires Ligne 1, Ligne 2, etc.
- Les deux premières colonnes de TRANSPOSE sont toujours les mêmes.
- La rangée de colonnes 1 existera toujours en tant que troisième colonne.
- Colonne (s) Les lignes 2 et suivantes peuvent exister selon le jeu de données.
Puis-je écrire la fonction Select () de telle sorte que Join () sélectionne au moins la colonne Ligne 1, puis s'il y en a plus dans la dernière colonne?
// This section is only build to handle two columns named Row 1 and Row 2
DT = Data Table( TRANSPOSE ) << Join(
With( Data Table( CATEGORY_TABLE ) ),
Select( :Forecast Material ),
SelectWith( :Category ),
Select( :Row 1, :Row 2 ), // sometimes there is only one row, sometimes there are more than one rows ******How to handle this?********
By Matching Columns( :Label = :Category ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
);
Re: Sélectionnez un nombre dynamique de lignes avec JSL, en sélectionnant les lignes qui remplissent une conditionSupprimez les arguments avec "Select" dans eux:
DT = Data Table( TRANSPOSE ) << Join(
With( Data Table( CATEGORY_TABLE ) ),
By Matching Columns( :Label = :Category ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
);
Les résultats contiendront toutes les colonnes des deux tables.
Re: Sélectionnez un nombre dynamique de lignes avec JSL, en sélectionnant les lignes qui remplissent une conditionMerci Don. J'essaie de mettre à jour le code de quelqu'un d'autre. Je pense que cela fait ce que nous voulons. Il faut prendre un peu de temps pour valider avant d’accepter comme solution. Je ne voulais pas que tu penses que je n'ai pas vu et apprécié ta réponse. Travaillait avec cette suggestion hier. Merci!Re: Sélectionnez un nombre dynamique de lignes avec JSL, en sélectionnant les lignes qui remplissent une conditionMerci BSwid. Dites-moi comment ça marche.