Re: Seleccione un número dinámico de filas con JSL, seleccionando filas que cumplan una condiciónIntenté algo como esto y obtuve un error Columna no encontrada {1} en acceso o evaluación de 'Argumento incorrecto'
Lo que imagino es el argumento dentro Seleccionar() dentro Unirse() .
Pensé que tal vez podría asignar un vector de columnas a una variable y usar la variable como argumento en 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>
Seleccione un número dinámico de columnas con JSL, seleccionando columnas que cumplan una condiciónhttps://www.jmp.com/support/help/14-2/use-set-selected-to-select-columns.shtml
¿Cuál es la mejor manera de reescribir algo como esto?
La intención es que DT sea una combinación de TRANSPOSE y CATEGORY_TABLE.
- CATEGORY_TABLE es una tabla de una columna con la categoría de columna
- TRANSPOSE es el resultado de una transposición de datos
El truco es que TRANSPOSE no siempre tiene el mismo número de columnas. Confusamente, la salida de la función de transposición nombra las columnas adicionales Fila 1, Fila 2, etc.
- Las dos primeras columnas de TRANSPOSE son siempre iguales.
- La Columna Fila 1 siempre existirá como la 3ra columna.
- La columna (s) Fila 2 y más allá puede existir dependiendo del conjunto de datos.
¿Puedo escribir la función Select () de tal manera que Join () seleccione al menos la columna Fila 1 y luego si hay más en la última columna?
// 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: Seleccione un número dinámico de filas con JSL, seleccionando filas que cumplan una condiciónElimine los argumentos con "Seleccionar" en ellos:
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 )
);
Los resultados contendrán todas las columnas de ambas tablas.
Re: Seleccione un número dinámico de filas con JSL, seleccionando filas que cumplan una condiciónGracias don. Estoy tratando de actualizar el código de otra persona. Creo que esta haciendo lo que queremos. Necesita tomar algo de tiempo para validar antes de aceptar como solución. No quería que pensaras que no vi y aprecié tu respuesta. Estaba trabajando con esta sugerencia ayer. ¡Gracias!Re: Seleccione un número dinámico de filas con JSL, seleccionando filas que cumplan una condiciónGracias BSwid. Déjame saber cómo funciona.