<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Hola,
este problema realmente me desconcierta.
Quiero hacer una concatenación, pero en una tabla (dt2) también tengo algunas entradas que ya tengo en la primera (dt1). Quiero mantener los de la primera tabla de datos (dt1) y quiero eliminarlos en la segunda (dt2).
Ya lo intenté y tengo otro problema al usar seleccionar dónde y eliminar los duplicados en la segunda tabla antes de concatenar. Tengo una lista de todos los duplicados, pero no puedo usar la lista como una variable en la cláusula select where ni en el filtro de datos
Summarize( a = by(column(dt, "band")),c=count );
La variable se ve así:
a = {"2_12_000264_0_9", "2_12_000265_0_1", "2_12_000267_0_3", "2_12_000269_1_3", "2_12_000269_2_1", "2_12_000270_1_7", "2_12_000270_2_1_0_02_1", "2_12_000270_2_1_012_1", " _000272_1_9", "2_12_000272_2_7", "2_12_000273_1_1", "2_12_000273_2_8" , "2_12_000274_0_4", "2_12_000275_1_3", "2_12_000275_2_1", "2_12_000276_1_4", "2_12_000276_2_2"};
y el filtro de datos completo:
dt2 << Data Filter( Add Filter( columns( :Bandname ), Where( :Bandname == {"2_12_000264_0_9", "2_12_000265_0_1", "2_12_000267_0_3", "2_12_000269_1_3", "2_12_000269_2_1", "2_12_000270_1_7", "2_12_000270_2_5", "2_12_000271_0_1", "2_12_000272_1_9", "2_12_000272_2_7", "2_12_000273_1_1", "2_12_000273_2_8", "2_12_000274_0_4", "2_12_000275_1_3", "2_12_000275_2_1", "2_12_000276_1_4", "2_12_000276_2_2"}), Display( :Bandname, Size( 221, 259 ), List Display ), Mode( Show( 1 ) ) ));
Pero usar la variable no funciona:
Add Filter( columns( :Bandname ), Where( :Bandname == a ), Display( :Bandname, Size( 221, 259 ), List Display ), Mode( Show( 1 ) ) ));
¿¿por qué??
Pero el principal problema es el anterior, eliminar los duplicados antes de concatenar.
Gracias de antemano
Muchas gracias, esto funciona muy bien... y tu primer código es realmente bueno para entender jsl
No sé por qué, pero en algunos casos, JSL simplemente no resuelve las variables de la lista, incluso cuando se evalúa perfectamente una lista de texto claro.
Una forma de evitar esto es usar una expresión y sustituirla por una lista analizada antes de la evaluación. Aquí hay un ejemplo de filtro de datos:
dt = Abierto ( "$ENGLISH_SAMPLE_DATA/Clase grande.jmp" ) ;
a = { "KATIE" , "ENRIQUE" , "ROBERTO" } ;
df_expr = exp. ( dt << filtro de datos ( Añadir filtro ( columnas ( : nombre ) , dónde ( : nombre == a ) , Mostrar ( : nombre , Visualización de lista ) ) ) ) ;
sustituir en ( df_expr , exp. ( a ) , Analizar gramaticalmente ( Carbonizarse ( evaluar ( a ) ) ) ) ;
evaluar ( df_expr ) ;
Sin embargo, para seleccionar filas condicionalmente en función de una lista, se puede programar de manera más eficiente utilizando For Each Row(). El resultado del código a continuación debe ser idéntico al anterior (excepto por la ventana de filtro de datos).
dt = Abierto ( "$ENGLISH_SAMPLE_DATA/Clase grande.jmp" ) ;
a = { "KATIE" , "ENRIQUE" , "ROBERTO" } ;
Por cada fila ( Estado de fila ( Fila () ) = Estado seleccionado ( Contiene ( a , : nombre [] ) ) )
Una vez que se seleccionan las filas duplicadas, simplemente ejecute dt << eliminar filas antes de concatenar.