¿Cómo puedo inicializar mis datos con respecto a un valor fijo?Hola, me gustaría implementar una fórmula para “inicializar” algunos datos en nuestras tablas. En concreto, me gustaría restar de todos los elementos de una columna el valor de la primera repetición de la ejecución de la prueba (la información de la repetición está contenida en otra columna).
Adjunto la tabla en la que estoy trabajando. La fórmula quedaría integrada en la Columna “X_35”. La idea es asignar a cada prueba el valor contenido en X_22 obtenido en la primera repetición (Columna X_21) del análisis, filtrando sin embargo por condición de prueba, en particular me interesa separar por otras columnas (por ejemplo X_5, X_7 y X_8). Después de eso aplicaría la diferencia para cada fila, obteniendo los offsets para cada punto de la primera repetición. Me gustaría encontrar una solución utilizando una fórmula de columna si es posible, evitando ingresar valores manualmente.
Estoy trabajando con JMP 17
Gracias
Análisis y modelado de datos básicosExploración y visualización de datosVentanasRe: ¿Cómo puedo inicializar mis datos con respecto a un valor fijo?Bienvenido a la Comunidad.
Estoy un poco confundido sobre lo que estás pidiendo. Lo que veo en tus datos es que
La columna X_31 define cada uno de los 8 niveles de datos, y cada una de estas agrupaciones de filas para la columna X_21 tiene valores de subagrupación de 1 hasta 980.
Lo que creo que desea hacer es, para una fila dada, que no tiene el valor X_21 de 1, observar sus valores para X_5, X_7 y X_8 y luego encontrar el valor inicial para X, los valores coincidentes para la columna X_22 y restar ese valor del valor de la fila actual para la columna X_22.
No estoy del todo seguro de mi evaluación. Al examinar los datos, hay muchas más combinaciones para las columnas X_5, X_7 y X_8 para cada agrupación de valores iniciales X_31.
Lo que está mostrando actualmente en la tabla de datos proporcionada, donde los valores de X_35 se copian de la columna X_22 si el valor de X_21 es igual a 1, es algo fácil de hacer en JMP. Entender lo que desea para las otras filas es confuso. Si pudiera proporcionar cuál sería el resultado esperado para la fila 7 y la fila 14 y los pasos seguidos para obtener el resultado, sería muy útil.
Re: ¿Cómo puedo inicializar mis datos con respecto a un valor fijo?Hola, gracias por la rápida respuesta. Perdón por mi pobre explicación pero es más complejo de explicar que, espero, de resolver.
Probaré con una tabla esquemática.
El objetivo es obtener la columna “Valor Inicial”, que tiene, para cada medida, el valor correspondiente a la primera repetición dependiendo del tipo de prueba, identificada aquí como A o B. Luego, con una simple diferencia obtengo el valor desplazado del primer experimento partiendo de 0.
La fórmula que vio en el otro mensaje es mi intento de escribir la columna “Valor inicial” usando una condición if con el número de repeticiones, mi problema es qué escribir en la otra condición para obtener el mismo valor para un número diferente de repeticiones.
Gracias de nuevo
Re: ¿Cómo puedo inicializar mis datos con respecto a un valor fijo?Se puede utilizar una fórmula de columna para crear lo que desee
As Constant( dt = Current Data Table() );
currentType = :Type;
theInitialValue = :Value[(dt << get rows where( :Type == CurrentType & :Repetition == 1 ))[1]];
:Value - theInitialValue;

El método funciona, sin embargo, dada una tabla de datos de 55.000+ la fórmula no es muy eficiente.
Un método más eficiente es utilizar un script simple para crear una nueva tabla que contenga solo los valores iniciales y luego fusionar la tabla nuevamente con la tabla original, donde la coincidencia permitirá la replicación de los valores iniciales a todos los registros coincidentes.
names default to here(1);
dt=
New Table( "Example2",
Add Rows( 8 ),
New Column( "Type",
Character,
Set Values( {"A", "A", "A", "A", "B", "B", "B", "B"} )
),
New Column( "Repetition",
Numeric,
Set Values( [1, 2, 3, 4, 1, 2, 3, 4] )
),
New Column( "Value",
Numeric,
Set Values( [4, 10, 8, 7, 6, 9, 5, 10] )
)
);
// Create a table with the initial values
dt << select where(:Repetition == 1 );
initialDT = dt << subset( selected rows(1), columns({:Type,:Value}));
// Rename column Value to Initial Value
initialDT:Value << set name("Initial Value");
// Merge the values back to the original table
dt << Update(
With( initialDT ) ,
Match Columns( :Type = :Type )
);
// Create a column that contains the difference
dt << New Column( "Difference",
formula( :Value - :Initial Value )
);

Re: ¿Cómo puedo inicializar mis datos con respecto a un valor fijo?Si realiza estos pasos de normalización con más frecuencia, podría considerar la GUI de normalización .
Además de restar el "primer" valor, proporciona muchas más opciones como "último", N-1, "mediana", "media" (estas últimas incluso tienen en cuenta la exclusión de filas).
Puede decidir si desea calcular los valores o si prefiere una fórmula que actualice automáticamente los valores cuando se actualiza la columna de entrada.
Re: ¿Cómo puedo inicializar mis datos con respecto a un valor fijo?¡Gracias!
Ahora estoy tratando de implementar el código con todas las variables que necesito, por el momento todo está funcionando.