Wählen Sie mit JSL eine dynamische Anzahl von Spalten aus und wählen Sie Spalten aus, die eine Bedingung erfüllenhttps://www.jmp.com/support/help/14-2/use-set-selected-to-select-columns.shtml
Wie kann man so etwas am besten umschreiben?
Die Absicht besteht darin, dass DT eine Verknüpfung von TRANSPOSE und CATEGORY_TABLE ist.
- CATEGORY_TABLE ist eine einspaltige Tabelle mit der Spalte Kategorie
- TRANSPOSE ist das Ergebnis einer Datentransponierung
Der Trick besteht darin, dass TRANSPOSE nicht immer die gleiche Anzahl von Spalten hat. Verwirrenderweise benennt die Ausgabe der Transponierungsfunktion die zusätzlichen Spalten Zeile 1, Zeile 2 usw.
- Die ersten beiden Spalten von TRANSPOSE sind immer gleich.
- Spalte Zeile 1 wird immer als 3. Spalte vorhanden sein.
- Je nach Datensatz können Spalten ab Zeile 2 vorhanden sein.
Kann ich die Select()-Funktion so schreiben, dass Join() mindestens Spalte Zeile 1 auswählt und dann, wenn noch mehr vorhanden sind, bis zur letzten Spalte?
// 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 )
);
Betreff: Wählen Sie mit JSL eine dynamische Anzahl von Zeilen aus und wählen Sie Zeilen aus, die eine Bedingung erfüllenDanke BSwid. Lassen Sie mich wissen, wie es funktioniert.
Betreff: Wählen Sie mit JSL eine dynamische Anzahl von Zeilen aus und wählen Sie Zeilen aus, die eine Bedingung erfüllenDanke Don. Ich versuche, den Code einer anderen Person zu aktualisieren. Ich denke, das macht, was wir wollen. Sie müssen sich etwas Zeit für die Validierung nehmen, bevor Sie sie als Lösung akzeptieren. Ich wollte nicht, dass Sie denken, ich hätte Ihre Antwort nicht gesehen und schätze sie nicht. Habe gestern mit diesem Vorschlag gearbeitet. Danke!Betreff: Wählen Sie mit JSL eine dynamische Anzahl von Zeilen aus und wählen Sie Zeilen aus, die eine Bedingung erfüllenEntfernen Sie die Argumente mit „Select“ darin:
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 )
);
Die Ergebnisse enthalten alle Spalten aus beiden Tabellen.
Betreff: Wählen Sie mit JSL eine dynamische Anzahl von Zeilen aus und wählen Sie Zeilen aus, die eine Bedingung erfüllenIch habe so etwas versucht und die Fehlermeldung „Spalte nicht gefunden“ {1} beim Zugriff oder bei der Auswertung von „Bad Argument“ erhalten.
Was ich mir vorstelle, ist die Argumentation innerhalb von Select() innerhalb von Join() .
Ich dachte, ich könnte vielleicht einer Variablen einen Spaltenvektor zuweisen und die Variable als Argument in Select() verwenden.
// 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">// VERBINDEN</SPAN>
DT <SPAN class="token operator">=</SPAN> <SPAN class="token function">Datentabelle</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">Verbinden</SPAN><SPAN class="token punctuation">(</SPAN>
With<SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Datentabelle</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>