¿Trabajando con filas excluidas?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
Tengo dos columnas.En la primera columna (Sitio), tiene el número 1 o 2 al lado.En la segunda columna, hay algunos valores numéricos.
He creado una función que calcula el rango y el percentil.Primero, la función calcula en una nueva columna el rango y el percentil.Luego la función selecciona todas las filas que tienen el valor 1 en el sitio 1 y las cuenta.Luego selecciona y excluye todas las filas con el valor 2 en la columna del sitio y luego calcula el rango y el percentil en otra columna.Todo esto está funcionando.
El problema surge cuando quiero calcular el rango y el percentil después de seleccionar y excluir filas con el valor 2 en la columna Sitio.No devuelve ningún error, pero no hay valores en la columna.Supongo que esto tiene que ver con la expresión excluir() en mi fórmula.Si elimino la declaración if de F3 para que sea exactamente como F, obtengo los mismos valores que la columna al lado, pero si mantengo F3 como está, ¡sin valores!
¿Qué me estoy perdiendo?Perdón si esto es muy obvio...
rpFunción = Función ( { fila , prueba } ,
//fila --> ¿cuántas filas (dispositivos) hay en la tabla de datos?
//prueba --? ¿Para qué prueba estamos calculando RP?
Tabla de datos actuales ( dtResumen ) ;
columna = Columna ( prueba ) ;
nuevoCol = "RP" || prueba ;
F = Evaluación Expr ( 100 * ( Rango de columna ( columna ) / Expr. ( fila ) )) ;
dtResumen << Nueva columna ( nuevoCol , Numérico , Fórmula ( Nombre Expr ( F ) ) ) ;
columna = Columna ( nuevoCol ) ;
columna << eliminar fórmula ;
dtResumen << Seleccione dónde ( : Sitio == 1 ) ;
fila1 = filas ( dtResumen << obtener filas seleccionadas ()) ;
dtResumen << Seleccione dónde ( : Sitio == 2 ) ;
fila2 = filas ( dtResumen << obtener filas seleccionadas ()) ;
dtResumen << Seleccione dónde ( : Sitio == 2 ) ;
dtResumen << excluir ;
nuevoCol = "RP" || prueba || "Sitio 1" ;
F1 = Evaluación Expr ( 100 * ( Rango de columna ( si ( excluido () , . , columna ) ) / Expr. ( fila1 ) )) ;
dtResumen << Nueva columna ( nuevoCol , Numérico , Fórmula ( Nombre Expr ( F1 ) ) ) ;
columna = Columna ( nuevoCol ) ;
columna << eliminar fórmula ;
dtResumen << seleccione donde ( : Sitio == 2 ) ;
dtResumen << no excluir ;
dtResumen << Seleccione dónde ( : Sitio == 1 ) ;
dtResumen << excluir ;
nuevoCol = "RP" || prueba || "Sitio 2" ;
F2 = Evaluación Expr ( 100 * ( Rango de columna ( si ( excluido () , . , columna ) ) / Expr. ( fila2 ) )) ;
dtResumen << Nueva columna ( nuevoCol , Numérico , Fórmula ( Nombre Expr ( F2 ) ) ) ;
columna = Columna ( nuevoCol ) ;
columna << eliminar fórmula ;
dtResumen << seleccione donde ( : Sitio == 1 ) ;
dtResumen << no excluir ;
) ;
Re: ¿Trabajar con filas excluidas?Hola MS,
Gracias por volver a mí.Me di cuenta de esto mientras buscaba entre todas las cosas de exclusión.Inicialmente pensé que tenía que excluir filas, por eso lo elegí.Me gusta mucho más la simplicidad de tu código, ¡gracias!
Re: ¿Trabajar con filas excluidas?¿No sería más sencillo apuntar al Sitio directamente en la declaración If y evitar excluir filas por completo? Por ejemplo:
rpFunción = Función ({ prueba } ,
F = Evaluación Expr ( 100 * ( Rango de columna ( Expr. ( Columna ( prueba ))) / Número de columna ( : Sitio ))) ;
dtResumen << Nueva columna ( "RP" || prueba , Numérico , Fórmula ( Nombre Expr ( F ))) ;
F = Evaluación Expr ( 100 * ( Rango de columna ( Si ( : Sitio != 1 , . , Expr. ( Columna ( prueba )))) / suma colombiana ( : Sitio == 1 ))) ;
dtResumen << Nueva columna ( "RP" || prueba || "Sitio 1" , Numérico , Fórmula ( Nombre Expr ( F ))) ;
F = Evaluación Expr ( 100 * ( Rango de columna ( Si ( : Sitio != 2 , . , Expr. ( Columna ( prueba )))) / suma colombiana ( : Sitio == 2 ))) ;
dtResumen << Nueva columna ( "RP" || prueba || "Sitio 2" , Numérico , Fórmula ( Nombre Expr ( F ))) ;
) ;
Re: ¿Trabajar con filas excluidas?Muchas gracias Jim.¡Está funcionando!Ni siquiera pensé en mirar eso.¡Estaba tan obsesionado con la exclusión de filas ya que era nuevo para mí y no miraba lo obvio!Gracias de nuevo.
Re: ¿Trabajar con filas excluidas?natalia,
Creo que lo encontré.
La segunda vez que asignas "Col=Newcol", en realidad no creo que quieras asignarlo a la nueva columna.En realidad, desea mantener la columna apuntando a la columna Rp Irgl.No a la nueva columna llamada Rp Irgl para el sitio 1. Utiliza el valor de col en su fórmula y acaba de reasignarlo al Rp Irgl para el sitio 1.
acabo de cambiar el
col=nuevacol;
col<
a
xcol=nuevacol;
xcol<
El tercer uso de col=newcol; y col<Re: ¿Trabajar con filas excluidas?
Hola natalie_
tal vez podrías usar una espera () entre selecciones.
de lo contrario, ahorrará tiempo utilizando subconjuntos de la tabla original y actualizando la tabla original con los cálculos que necesita. solo asegúrese de no anular los datos de la tabla original.
ron
Re: ¿Trabajar con filas excluidas?Hola Jim,
Gracias por volver a mí.Desafortunadamente, el código todavía no funciona.
Noté que en el código que me enviaste no agregaste una exclusión (1) en la selección del Sitio 2.Lo agregué, pero desafortunadamente no funcionó.Adjunté una pantalla para mostrarles cómo se ve mi tabla de datos.Las dos primeras columnas rp son lo que quiero, pero la última no tiene ningún valor.
rpFunción = Función ( { fila , prueba } ,
//fila --> ¿cuántas filas (dispositivos) hay en la tabla de datos?
//prueba --? ¿Para qué prueba estamos calculando RP?
Tabla de datos actuales ( dtResumen ) ;
columna = Columna ( prueba ) ;
nuevoCol = "RP" || prueba ;
F = Evaluación Expr ( 100 * ( Rango de columna ( columna ) / Expr. ( fila ) )) ;
dtResumen << Nueva columna ( nuevoCol , Numérico , Fórmula ( Nombre Expr ( F ) ) ) ;
columna = Columna ( nuevoCol ) ;
columna << eliminar fórmula ;
dtResumen << Seleccione dónde ( : Sitio == 1 ) ;
fila1 = filas ( dtResumen << obtener filas seleccionadas ()) ;
dtResumen << Seleccione dónde ( : Sitio == 2 ) ;
fila2 = filas ( dtResumen << obtener filas seleccionadas ()) ;
dtResumen << Seleccione dónde ( : Sitio == 2 ) ;
dtResumen << excluir ( 1 ) ;
nuevoCol = "RP" || prueba || "Sitio 1" ;
F1 = Evaluación Expr ( 100 * ( Rango de columna ( si ( excluido () , . , columna ) )) / Expr. ( fila1 ) ) ;
dtResumen << Nueva columna ( nuevoCol , Numérico , Fórmula ( Nombre Expr ( F1 ) ) ) ;
columna = Columna ( nuevoCol ) ;
columna << eliminar fórmula ;
dtResumen << seleccione donde ( : Sitio == 2 ) ;
dtResumen << excluir ( 0 ) ;
dtResumen << Seleccione dónde ( : Sitio == 1 ) ;
dtResumen << excluir ( 1 ) ;
nuevoCol = "RP" || prueba || "Sitio 2" ;
F2 = Evaluación Expr ( 100 * ( Rango de columna ( si ( excluido () , . , columna ) )) / Expr. ( fila2 ) ) ;
dtResumen << Nueva columna ( nuevoCol , Numérico , Fórmula ( Nombre Expr ( F2 ) ) ) ;
columna = Columna ( nuevoCol ) ;
columna << eliminar fórmula ;
dtResumen << seleccione donde ( : Sitio == 1 ) ;
dtResumen << excluir ( 1 ) ;
) ;

Re: ¿Trabajar con filas excluidas?natalia,
Tomé su código y le hice un ligero cambio; Cambié la exclusión y exclusión para excluir (0 | 1).Esto asegura la acción correcta del mensaje.La exclusión y la no exclusión son en realidad conmutadores, no mensajes absolutos.
El código parece funcionar:
rpFunción = Función ( {fila , prueba} ,
//fila --> ¿cuántas filas (dispositivos) hay en la tabla de datos?
//prueba --? ¿Para qué prueba estamos calculando RP?
Tabla de datos actuales ( dtResumen ) ;
columna = Columna ( prueba ) ;
nuevoCol = "RP" || prueba ;
F = Evaluación Expr ( 100 * ( Rango de columna (columna) / Expr. (fila) )) ;
dtResumen << Nueva columna ( nueva col , Numérico , Fórmula( Nombre Expr ( F ) ) ) ;
columna = Columna (nueva col) ;
columna << eliminar fórmula;
dtResumen << Seleccione dónde ( : Sitio == 1 ) ;
fila1 = filas (dtResumen < ()) ;
dtResumen << Seleccione dónde ( : Sitio == 2 ) ;
fila2 = filas (dtResumen < ()) ;
dtResumen << Seleccione dónde ( : Sitio == 2 ) ;
dtResumen << excluir;
nuevoCol = "RP" || prueba || "Sitio 1" ;
F1 = Evaluación Expr ( 100 * ( Rango de columna ( si ( excluido () , . , col) ) / Expr. (fila1) )) ;
dtResumen << Nueva columna ( nueva col , Numérico , Fórmula( Nombre Expr ( F1 ) ) ) ;
columna = Columna (nueva col) ;
columna << eliminar fórmula;
dtResumen << seleccione donde ( : Sitio == 2 ) ;
dtResumen << excluir ( 0 ) ;
dtResumen << Seleccione dónde ( : Sitio == 1 ) ;
dtResumen << excluir ( 1 ) ;
nuevoCol = "RP" || prueba || "Sitio 2" ;
F2 = Evaluación Expr ( 100 * ( Rango de columna ( si ( excluido () , . , col) ) / Expr. (fila2) )) ;
dtResumen << Nueva columna ( nueva col , Numérico , Fórmula( Nombre Expr ( F2 ) ) ) ;
columna = Columna (nueva col) ;
columna << eliminar fórmula;
dtResumen << seleccione donde ( : Sitio == 1 ) ;
dtResumen << excluir ( 0 ) ;
) ;

Re: ¿Trabajar con filas excluidas?No estoy seguro de que esto sea útil, pero en versiones anteriores del programa, las fórmulas de columna no eran sensibles a las exclusiones.
de lo contrario, es mejor hacer los cálculos basándose en << obtener filas donde () en lugar de en la selección.
ron
Re: ¿Trabajar con filas excluidas?EDITAR: F3 en mi explicación realmente debería decir F2.