JMP Scripting: cómo cambiar el valor de una "celda"<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Me pregunto cómo programarlo para cambiar el valor de una "celda" que es el resultado de un cálculo en el script.
Específicamente, quiero poder cambiar el valor de una celda a "0" si el valor calculado es negativo y dejar todas las demás "celdas" en paz.
Incluso si necesita estar en una nueva columna, está bien. Por ejemplo, si tengo mi columna de valores calculados y el que me interesa es negativo, cree una nueva columna que simplemente diga "0" para esa "celda".
Gracias de antemano.
Re: JMP Scripting- Cómo cambiar el valor de una "celda"un trazador de líneas....
dt[dt<< obtener filas donde(:edadval < 14)] = 0;
Re: JMP Scripting- Cómo cambiar el valor de una "celda"Para este escenario, podría usar la propiedad de columna 'Comprobación de rango'. De esa manera, la tabla lleva los metadatos y no necesita otra tabla:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(2);
Column(dt, "age") << rangeCheck( !LT( 13 ) );
Column(dt, "weight") << rangeCheck( LT( 100 ) );Re: JMP Scripting- Cómo cambiar el valor de una "celda"Debe cambiar la fórmula para verificar el valor que desea cambiar y luego usar una declaración condicional en la fórmula para cambiarlo al valor que desea.
// Sample formula
:A + :B;
If( isMissing(:A+:B) == 1, 0 );
Re: JMP Scripting- Cómo cambiar el valor de una "celda"Hola Jim,
¿Cuál sería la forma de este script si tuviera el "else" y la tercera alternativa como se define en el comando IF?
Mejor,
k
Re: JMP Scripting- Cómo cambiar el valor de una "celda"ian,
Me gusta la forma de matriz, pero cómo hacerlo si quiero limpiar varias columnas para las cuales las condiciones de limpieza son diferentes.
por ejemplo en clase grande
edad -> configurar todas las celdas con valor <13 como vacías
altura -> configurar todas las celdas con valor> 100 como vacías
suponiendo que tengo una tabla de referencia para todas las condiciones de la columna.
Re: JMP Scripting- Cómo cambiar el valor de una "celda"¿Puedes publicar la fórmula?Como txnelson dijo que simplemente puede hacer que la verificación sea parte de la fórmula.
Para publicar la fórmula:
1. Abra su conjunto de datos y haga clic en el signo + junto a la columna de fórmula.
2. Haga doble clic dentro de la ventana de fórmula.Esto cambiará la ventana para mostrar el código JSL para la fórmula.
3. Copie el código JSL y publíquelo en este foro.
La nueva fórmula será algo como esto:
tmp = poner - original - fórmula - aquí ;
si ( tmp < 0 , 0 , tmp ) ;
Re: JMP Scripting- Cómo cambiar el valor de una "celda"ciertamente puede hacer que la verificación condicional sea parte de la fórmula
Re: JMP Scripting- Cómo cambiar el valor de una "celda"¿Tendría sentido hacer que la prueba sea parte de la fórmula?
Si ( Fósforo ( ... ) < 0 ,
0 ,
Fósforo ( ... )
)
Re: JMP Scripting- Cómo cambiar el valor de una "celda"Gracias a todos.
Lo que estoy tratando de hacer es cambiar el valor de una celda de una columna que contiene una fórmula.
La columna "Edad" de Big Class no proviene de una fórmula, por lo que todas estas sugerencias funcionan para cambiar el valor de una celda.
Tengo una columna, llámela "Prueba", que usa la fórmula de coincidencia. ¿Hay alguna forma de programarlo para cambiar el valor de una celda en esa columna a cero si la fórmula de coincidencia lo calcula como negativo? Quiero poder forzar el valor a cero si es negativo.
Re: JMP Scripting- Cómo cambiar el valor de una "celda"Voy a dar este un paso más.Muchas veces he hecho cosas similares a las que mostró Ian.Sacando los datos de la tabla de datos y usando operadores matriciales.Esto tiene una ventaja de rendimiento en grandes cantidades de datos.Sin embargo, la siguiente es una técnica que he usado muchas, muchas veces, porque es muy rápida y no requiere extraerla de la tabla de datos.
Nombres predeterminados hasta aquí ( 1 );
dt = Abrir( "$SAMPLE_DATA/Big Class.jmp" );
Try( dt:Edad[dt << obtener filas donde( :Edad < 14 )] = 0 );
La función "Try" simplemente protege contra el caso en el que Get Rows Where podría devolver una matriz vacía y la asignación generaría un error.
Re: JMP Scripting- Cómo cambiar el valor de una "celda"Y sobre la base de la respuesta de Jim, generalmente se considera una buena práctica evitar los bucles si es posible:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Get the values of age into a vector
ageVals = dt:Age << getValues;
// Find the location of age values less than 14
ageValsLessThan14 = Loc(ageVals < 14);
// Set these values to zero
ageVals[ageValsLessThan14] = 0;
// Put the new values back into the column
dt:Age << setValues(ageVals);
Re: JMP Scripting- Cómo cambiar el valor de una "celda"rebeca,
Me pregunto si lo que está preguntando debe explicarse en un nivel más básico que el que mostró Justin.Su ejemplo le da una respuesta, sin embargo, la forma en que describió su problema, puedo especular sobre escenarios en los que los componentes de su declaración condicional pueden provenir de fuentes distintas a la tabla de datos actual.
Uno de los conceptos básicos en una tabla de datos JMP es que cualquier celda es directamente direccionable.Usando la tabla de datos de la respuesta de Justin, se puede acceder a cualquiera de las celdas simplemente especificando el nombre de la columna y el número de fila.
:Age[1]
apunta al valor de las primeras filas de la columna Edad.Una forma más correcta de hacer referencia a él es usar el puntero de la tabla de datos (espacio de nombres de la tabla de datos).Entonces, si el puntero a la tabla de datos como se especifica en la respuesta de Justin es "dt", entonces
dt:Age[1]
es la forma más adecuada.
Tomando el ejemplo de Justin, en realidad podríamos cambiar los valores en su lugar y no tener que crear una nueva columna.El siguiente código hará eso
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For( I = 1, I <= N Rows( dt ), I++,
if(dt:Age < 14,
dt:Age = 0
);
);
Re: JMP Scripting- Cómo cambiar el valor de una "celda"Aquí hay un ejemplo de cómo cambiar condicionalmente una celda al copiar a una nueva columna:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = dt << New Column( "New Column", Formula( If( :age < 14, 0, :age ) ) );
En su caso, cambiaría la condición para que sea menor que cero en lugar de 14.