Re: Estoy intentando restablecer columnas con un carácter ("<") a numérico y conservar el "<" en otra columnaTabla adjunta, por si acaso.
Re: Estoy intentando restablecer columnas con un carácter ("<") a numérico y conservar el "<" en otra columnaEsto podría darte algunas ideas sobre lo que podrías hacer.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(2),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"<1", "<3"})),
New Column("Column 2", Character, "Nominal", Set Values({"<2", "<4"}))
);
col_names = dt << Get Column Names("String");
For Each({col_name}, col_names,
dt << New Column(col_name ||"_Q", Numeric, Continuous, << Set Each Value(
Num(Substitute(AsColumn(dt, col_name), "<", ""));
));
);
Busque el índice de secuencias de comandos y la guía de secuencias de comandos para Substitute() para obtener más información sobre cómo se puede utilizar.
Re: Estoy intentando restablecer columnas con un carácter ("<") a numérico y conservar el "<" en otra columnaSimplemente sustituya esa parte con una referencia a su tabla. Es posible que también desee limpiar la selección de columnas si sabe cuál debe usarse (en lugar de simplemente usar << obtener nombres de columnas ("Cadena") para obtener todas las columnas).
Re: Estoy intentando restablecer columnas con un carácter ("<") a numérico y conservar el "<" en otra columnaLamentablemente, no sigo cómo se aplica ese código a mi pregunta original.Probablemente no fui claro en mi publicación original o me falta algo (soy un novato en jsl).En cualquier caso, seguiré intentándolo y es posible que deba reformular mi pregunta.(Por cierto, tengo una gran cantidad de columnas en juego y todas, excepto la columna de fecha y hora, necesitan este tratamiento; demasiadas para definirlas a mano). Gracias de nuevo.
Re: Estoy intentando restablecer columnas con un carácter ("<") a numérico y conservar el "<" en otra columnaA continuación se muestra una secuencia de comandos que verifica < y cualquier valor de Post Script como "J" o "UJ", etc., y mueve los valores a una nueva columna Calificadora.Luego convierte la columna de una columna de caracteres a una columna numérica.

Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( string, character );
For Each( {col, i}, colNames,
GTFound = "NO";
postScriptFound = "NO";
// Find rows that have < in them
theRows = dt << get rows where( Contains( As Column( dt, col ), "<" ) );
// If < is found then
// 1. Create a new column to hold the < in
// 2. Loop through the rows with < and
// 1. Add < to the appropriate row in the new Qualifier column
// 2. Delete the < from the current column
If( N Rows( theRows ) > 0,
GTFound = "YES";
dt << add Multiple Columns( col, 1, Character );
Column( dt, N Cols( dt ) ) << set name( col || "_QUALIFIER" );
dt << move selected column( after( As Column( col ) ) );
For Each( {fixRow, k}, theRows,
As Column( dt, col || "_QUALIFIER" )[fixRow] = "<";
As Column( dt, col )[fixRow] = Substr( Column( col )[fixRow], 2 );
);
);
// Find if there are any post script values on any of the rows
theRows = dt << get rows where( Word( 2, As Column( dt, col ), " " ) != "" );
// If found, then if a new column has not already been add, add the new Qualifer column
If( N Rows( theRows ) > 0,
postScriptFound = "YES";
If( GTFound == "NO",
dt << add Multiple Columns( col, 1, Character );
Column( dt, N Cols( dt ) ) << set name( col || "_QUALIFIER" );
dt << move selected column( after( As Column( col ) ) );
);
// Loop through the rows with post scripts and
// 1. Add the post scripts to the Qualifer column
// 2. Delete the post scripts from the current column
For Each( {fixRow, k}, theRows,
As Column( dt, col || "_QUALIFIER" )[fixRow] = Trim(
As Column( dt, col || "_QUALIFIER" )[fixRow] || " " || Word( 2, As Column( dt, col )[fixRow], " " )
);
As Column( dt, col )[fixRow] = Word( 1, As Column( dt, col )[fixRow], " " );
);
);
// If eiter < or Post Scripts were found, convert the column to numeric, continuous
If( GTFound == "YES" | postScriptFound == "YES",
Column( dt, col ) << data type( numeric ) << modeling type( continuous )
);
);
Estoy intentando restablecer las columnas con un carácter ("<") a numérico y conservar el "<" en otra columna.Hola: tengo una tabla con columnas formadas por resultados de laboratorio (valores numéricos) que se ingresaron como una cadena de texto.Son cadenas de texto porque algunas tienen un "<" delante del valor numérico.Necesito poder realizar cálculos numéricos sobre los valores, así que estoy intentando eliminar el símbolo "<" y colocarlo en una nueva columna llamada "ORIGCOLNAME_QUALIFIER" (donde ORIGCOLNAME es el nombre de la columna de la que "< "Se eliminaron los símbolos).
Desafortunadamente, el siguiente código no funciona.
Names Default To Here( 1 );
dt = Current Data Table();
compList = {};
For( i = 1, i <= N Cols( dt ), i++,
colName = Column( dt, i ) << get name;
);
// Create the columns
For Each( {comp, i}, compList,
Eval(
Parse(
"dt << New Column( \!"" || compList[i] || "_QUALIFIER" ||
"\!",
character, nominal,
formula(
x=.;
if (comp << contains ("<"), x = <);
Recibo el siguiente mensaje:

Cualquier aportación sería muy apreciada.
Análisis y modelado de datos básicosOrganización de contenidosCombinación y limpieza de datosRe: Estoy intentando restablecer columnas con un carácter ("<") a numérico y conservar el "<" en otra columnaGracias jthi: la primera parte de su código crea una nueva tabla de 2 filas con columnas con nombres predeterminados.
Names Default To Here( 1 );
dt = New Table( "Untitled",
Add Rows( 2 ),
Compress File When Saved( 1 ),
New Column( "Column 1", Character, "Nominal", Set Values( {"<1", "<3"} ) ),
New Column( "Column 2", Character, "Nominal", Set Values( {"<2", "<4"} ) )
);
Sin embargo, estoy tratando de mantener intactos los nombres de mis columnas mientras agrego una nueva columna con el nombre correspondiente a cada una de mis columnas existentes pero con "_qualifier" al final.(Ejemplo: digamos que mis columnas existentes son cloruro (carácter), sulfato (sulfato), ..., las nuevas columnas serían cloruro (numérica), sulfato (numérica), cloruro_calificador (carácter), sulfato_calificador (carácter), etc.
Re: Estoy intentando restablecer columnas con un carácter ("<") a numérico y conservar el "<" en otra columnaEso funcionó perfectamente.Y las líneas de comentarios son de gran ayuda ya que me ayudarán a comprender cada paso del proceso.Esto aumenta lo que puedo encontrar en la documentación de ayuda a medida que aprendo cómo aplicar estos fundamentos de jsl a mi conjunto de datos.Muchas gracias.
Re: Estoy intentando restablecer columnas con un carácter ("<") a numérico y conservar el "<" en otra columnaPuede que no entienda su necesidad y probablemente haya formas más eficientes de hacerlo, especialmente si sus datos tienen muchas filas, pero aquí hay un método de fuerza bruta si esta tabla se parece al resultado que desea.

Names Default To Here(1);
id_colnames = {"well", "Sample Date"};
dt = Current Data Table();
nr =nrow(dt);
col_names = dt << Get Column Names("String");
For Each({col_name}, col_names,
If( !Contains(id_colnames, col_name),
dt << New Column(col_name||"_Q", Character, << Set Each Value(
If(Contains(AsColumn(dt,col_name), "<"), "<",""))
);
curr_col = column(dt,col_name);
For(i=1, i<=nr, i++,
curr_col[i]= Substitute( word(1, curr_col[i]) ,"<","");
);
curr_col << Set Data Type(Numeric) << Set Modeling Type ("Continuous");
); // end If()
); //end For Each()
Re: Estoy intentando restablecer columnas con un carácter ("<") a numérico y conservar el "<" en otra columna¡Gracias GZMorngan0!Lo siento, tardo en responder.Acabo de volver a consultar el hilo.
Agradezco ver otra técnica.