Crear varias columnas nuevas según la fórmulaHola comunidad jmp
Tengo 19000 columnas x 88 filas que contienen datos y valores de datos continuos de expresión de biomarcadores.
Quiero crear una nueva columna para cada marcador que contenga una fórmula que reste el valor de expresión del biomarcador al valor de referencia.
No es necesario seleccionar ninguna fila, ya que quiero todas las filas tanto del biomarcador como de la referencia.
Parece bastante sencillo, pero tengo dificultades para insertar los datos del biomarcador en la nueva columna (probé la fórmula pero tampoco funciona).
El código no contiene ninguna iteración, ya que solo quiero ver primero si funciona para una sola columna.

Automatización y scriptingAnálisis y modelado de datos básicosAcceso a datosRe: Crear varias columnas nuevas según una fórmulaHola @BioJmPCoder , ¿puedes pegar el código usando el ¿Icono en los botones de publicación?
Re: Crear varias columnas nuevas según una fórmulaA continuación se muestra un ejemplo que crea todas las columnas nuevas en una tabla de datos, utilizando la tabla de datos de muestra Presión arterial. El script utiliza dos métodos diferentes para crear las columnas nuevas y demostrar que se pueden utilizar métodos diferentes para obtener los mismos resultados.
names default to here(1);
// Open a sample data table to use for illustration
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
// Get all of the numeric continuous column names
colNames = dt << get column names( string, continuous );
// Method 1
// Cycle through all Numeric, Continuous columns and create
// a new column with the values from the original column,
// using "set each value()"
For Each( {col}, colNames,
dt << New Column( col || " Dif1", numeric, continuous,
format( "Fixed Dec", 3, 0 ),
set each value( as column(col))
)
);
// Method 2
// Cycle through all Numeric, Continuous columns and create
// a new column with the values from the original column,
// pulling all of the values for a column into a matrix,
// and then creating a new column and populating the new
// column with the values from the matrix
For Each( {col}, colNames,
theValues = column( col ) << get values;
dt << New Column( col || " Dif2", numeric, continuous,
format( "Fixed Dec", 3, 0 )
);
column( dt, nCols(dt) ) << set values( theValues );
);Re: Crear varias columnas nuevas según una fórmulaHola Jim,
Gracias por el aporte. Estoy intentando normalizar todos los puntos de datos de la columna restando los valores de la columna 1. Aquí obtengo los valores de la columna 3, pero obtengo el error que se muestra a continuación. ¿Quizás necesito vectorizar los valores y hacer que no sean cadenas antes de poder ejecutar la diferencia?
dt = Current data table();
col_names = dt << get column names(string, continuous);
markerCount = Column(3);
normCount = markerCount - Column(1);
dt << New Column( "Norm_" || col_names[3],
numeric,
continuous,
format( "Fixed Dec", 3, 2 ),
set each value( as column(normCount))
);
//set each value( as column(Column(3)) - column(Column(1)))<BR /><BR /><BR /><BR /><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 381px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="image.png" style="width: 381px;"><span class="lia-inline-image-display-wrapper" image-alt="image.png" style="width: 381px;"><img src="https://us.v-cdn.net/6038925/uploads/images/71119i06611C84D006971E/image.png" role="button" title="image.png" alt="image.png" /></span></SPAN></SPAN>
Re: Crear varias columnas nuevas según una fórmulaParece haber cierta confusión sobre cómo manipular columnas en una tabla de datos en comparación con cómo trabajar con variables JSL. A continuación, se muestra un script que utiliza 2 métodos para crear una resta de los valores en la columna "BP 6M" con los valores en la columna "BP 8M".
El método 1 crea la columna Norm_BP 6M y el método 2 crea la columna Norm2_BP 6M

He anotado el JSL con la esperanza de ayudarlo a comprender lo que hacen los 2 enfoques diferentes.
names default to here(1);
// Open a sample data table to use for illustration
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
// The data table has the following columns in it
// Subject, Dosec BP 8M, BP 12M, BP 6M, BP 8W, BP 12W, BP 6W,
// BP 8F, BP 12F, BP 6F, Norm_BP 6M
// Get all of the numeric continuous column names
col_Names = dt << get column names( string, continuous );
// Get Column Names returns a JMP List of column names
// of the columns that have a Modeling Type of Continuous
// {"BP 8M", "BP 12M", "BP 6M", "BP 8W", "BP 12W", "BP 6W",
// "BP 8F", "BP 12F", "BP 6F"}
// Note that the first 2 column in the data table, Subject and Dose
// are not in the list
// Note: Specifying
// Column( 1 )
// references the 1st column in the data table, which is Subject
// Specifying
// Column( col_Names[1] )
// references the 1st column in the col_Names List, which is BP 8M
// Method 1
// Create the new column. Set Each Value loops through each
// row in the data table and applies the specified formula
// which is to subtract the value in the 1st column in the
// col_Names list from the value in the 3rd column in the
// col_Names list
dt << New Column( "Norm_" || col_names[3],
numeric,
continuous,
Format( "Fixed Dec", 3, 2 ),
set each value( As Column( col_Names[3] ) - As Column( col_Names[1] ) )
);
// Method 2
// Perform the same subtraction, however do it by pulling all of the
// values from each of the 2 target columns into 2 matrices and then
// use matrix math to do the subtraction into an additional matrix
// and then take those values and put them into the new column
// Create the new column with no values
dt << New Column( "Norm2_" || col_names[3],
numeric,
continuous,
Format( "Fixed Dec", 3, 2 )
);
// Pull the data from the 2 columns in the data table
matCola = column( col_Names[1]) << get values;
matColb = column( col_Names[3]) << get values;
// Subtract the values in matCola from matColb
matResults = matColb - matCola;
// Put the results into the new column
column( "Norm2_" || col_names[3] ) << set values( matResults);