Betreff: Wählen Sie mit JSL eine dynamische Anzahl von Zeilen aus, wobei Sie Zeilen auswählen, die eine Bedingung erfüllenIch habe so etwas ausprobiert und einen Fehler bekommen Spalte {1} in Zugriff oder Auswertung von 'Bad Argument' nicht gefunden
Was ich mir vorstelle, ist die innere Auseinandersetzung Wählen() innerhalb Beitreten() .
Ich dachte, ich könnte 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">// 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>
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 ist, dass DT ein Join von TRANSPOSE und CATEGORY_TABLE ist.
- CATEGORY_TABLE ist eine einspaltige Tabelle mit der Spalte Category
- TRANSPOSE ist das Ergebnis einer Daten-Transponierung
Der Trick ist, dass TRANSPOSE nicht immer die gleiche Anzahl von Spalten hat. Verwirrenderweise benennt die Ausgabe der Transponierungsfunktion die zusätzlichen Spalten Row 1, Row 2 usw.
- Die ersten beiden Spalten von TRANSPOSE sind immer gleich.
- Spalte Zeile 1 ist immer die 3. Spalte.
- Spalte (n) Zeile 2 und höher können je nach Datensatz vorhanden sein.
Kann ich die Funktion Select () so schreiben, dass Join () mindestens die Spalte Row 1 auswählt und dann, wenn es mehr als die letzte Spalte gibt?
// 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, wobei Sie Zeilen auswählen, die eine Bedingung erfüllenEntfernen Sie die Argumente mit "Select":
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, wobei Sie Zeilen auswählen, die eine Bedingung erfüllenDanke Don. Ich versuche, den Code eines anderen Benutzers zu aktualisieren. Ich denke das macht was wir wollen. Nehmen Sie sich etwas Zeit für die Validierung, bevor Sie die Lösung akzeptieren. Ich wollte nicht, dass du denkst, ich hätte deine Antwort nicht gesehen und geschätzt. Hat gestern mit diesem Vorschlag gearbeitet. Vielen Dank!Betreff: Wählen Sie mit JSL eine dynamische Anzahl von Zeilen aus, wobei Sie Zeilen auswählen, die eine Bedingung erfüllenDanke BSwid. Lass mich wissen, wie es funktioniert.