Solo manipulando los datos de la columna una vez.¡Hola!
Tengo un problema en el que estoy multiplicando una columna de datos (un grupo de Corrientes máximas) por 100 para obtener las Densidades actuales máximas, y así cuando ejecuto el script lo hago bien:
columna ( 13 ) << establecer valores ( ( Columna ( 13 ) << obtener como matriz ) * 100 ) ;
columna ( 13 ) << escoger un nombre ( "Max Jc (mA / um ^ 2)" ) ;
Pero si ejecuto el script varias veces, se siguen multiplicando los datos por cien, y tengo que cerrar la base de datos y volver a abrirla.
¿Hay alguna manera de hacerlo actualizar solo una vez?
Gracias,
Tyler
Re: Sólo manipulando datos de columna una vezResidencia en @pmroz De entrada, usted querría cambiar su código de la siguiente manera:
//define columns to search for
colSearch1 = "Corrected Area";
colSearch2 = "Max Ic";
// Get Column Names from the data table
ColNames = dt << Get Column Names("string");
//search for desired columns
colNum1 = Contains(ColNames,colSearch1);
colNum2 = Contains(ColNames,colSearch2); Ahora tiene la referencia para colNum1 y colNum2 como necesite. Alternativamente como @pmroz explicó:
Col1 = column(dt,"Corrected Area") ;
Col2 = column(dt,"Max Ic") ;
Re: Sólo manipulando datos de columna una vezSolo necesitas obtener los nombres de las columnas una vez. Eso carga los nombres de columna en una lista.
Pero también puedes referirte a columnas directamente usando sus nombres:
columna (dt, " Max Ic (mA) ") Es un constructo aceptable.
Re: Sólo manipulando datos de columna una vezAsí que tengo que leer en dos columnas que eventualmente voy a usar para una
Análisis bivariado simple: ¡Ahora mismo no funciona! Gracias de nuevo por todo
La ayuda y orientación!
// definir columnas para buscar
colSearch1 = "Área corregida";
colSearch2 = "Max Ic";
// obtener columnas de interés
Col1 = dt << * Obtener nombres de columna (* "Área corregida" *) *;
Col2 = dt << * Obtener nombres de columna (* "Max Ic" *) *;
// buscar las columnas deseadas
colNum1 = Contiene * (* Col1, colSearch1 *) *;
colNum2 = Contiene * (* Col2, colSearch2 *) *;
// columna (13) << establecer valores ((Columna (13) << obtener como matriz) * 100);
// columna (13) << nombre del conjunto ("Max Jc (mA / um ^ 2)");
Columna1 = Columna * (* dt, columnaN * 1) * << * establecer valores (* * (* Columna1 << * obtener como
matriz) * ** 100) *;
Column1 << * set name (* "Max Jc (mA / um ^ 2)" *) *;
Columna2 = Columna * (* dt, columnaN * 2) *;
Cerrar * (* dt, Guardar * (ruta de archivo)); *
// Llame a CreateBivariate para hacer un análisis bivariado (dos variables) \
status = List * (0 *, * 0) *;
Nueva ventana * (* "Análisis personalizado",
Cuadro de lista H * (*
Cuadro de lista V * (*
Cuadro de panel * (* "Controles",
Cuadro de texto * (* "Elegir análisis" *) *,
choice = Check Box * ({* "Distribution", "Fit Line" *} *,
current = choice << * Get (1) *;
// xParam = Columna (9);
// yParam = Columna (13);
xParam = Columna1;
yParam = Column2;
Si * (* Y * (* actual, No * (* estado * [** 1] * *) * *) *,
dt << * Añadir (*
dt = V Cuadro de lista * (*
bivDistribution = Distribution * (*
Y * (* Eval * (* yParam *) * *) *,
X * (* Eval * (* xParam *) * *) *,
*) *;
*) *
Re: Sólo manipulando datos de columna una vez @ tylerram93 ,
Esto debería hacerlo.
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Define Column To Search For
ColToSearch = "age";
// Get Column Names
ColNames = dt << Get Column Names("String");
// Search if the desired column names exists
ColNum = Contains(ColNames,ColToSearch);
// Get Reference to desired Column
Col = Column(dt,ColNum);
// Alternatively
Col(ColNum) // Also refers to your desired column Re: Sólo manipulando datos de columna una vez¡Eso funcionó perfectamente! ¡Gracias!
Siguiente pregunta:
¿Hay alguna forma de seleccionar columnas basadas en su nombre? Así que en lugar de usar la columna (13) puede buscar la columna con "Max Ic (mA)"
Gracias,
Tyler
Re: Sólo manipulando datos de columna una vezHola @ tylerram93:
Una forma sencilla de solucionar este problema es asegurarse de que la tabla esté cerrada al final del script. Siempre que sus datos sin procesar sean consistentes, independientemente de cuántas veces ejecute el script, guárdelo y ciérrelo al final como se muestra a continuación: la multiplicación solo debe realizarse una vez.
Al no cerrar la tabla, estás modificando la tabla repetidamente, me parece.
En caso de que haya entendido mal su pregunta, pegue un conjunto de datos de prueba y un script de prueba.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
column(4) << set values( (Column(4) << get as matrix) *100);
column(4) << set name("Max Jc (mA/um^2)");
Close(dt,Save(FilePath));
Mejor
uday