fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)Hola
Tengo dos columnas, una que contiene valores numéricos y otra que contiene cadenas.
Quiero crear una tercera columna que tome el valor numérico si el valor de la cadena es "paramétrico" y el valor de la cadena si no lo es.
Intenté esto, pero me aparece un error "La columna TEST_RESULT requiere valores numéricos", aunque está definida como columna de tipo Carácter.
Estoy usando JMP15 si importa.
col_test_result =dt <
<NEW column=""></NEW>
Later on I want to split this column so the output table will have either numeric or character type data, will JMP be able to set it to numeric based<BR />on the contents although the source column was character?
<BR /><BR />
<LINGO-LABS id="lingo-labs-536312" slang="en-US" mode="UPDATE">
<LINGO-LABEL>Modelado estadístico avanzado</LINGO-LABEL>
<LINGO-LABEL>Organización del contenido</LINGO-LABEL>
<LINGO-LABEL>Combinación y limpieza de datos</LINGO-LABEL>
<LINGO-LABEL>Personalización masiva</LINGO-LABEL>
<LINGO-LABEL>Ingeniería de Calidad y Procesos</LINGO-LABEL>
<LINGO-LABEL>Compartir y comunicar resultados</LINGO-LABEL>
</LINGO-LABS>
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)Debe usar la función Char () para convertir los datos numéricos en caracteres
col_test_result = dt << New Column( "TEST_RESULT", Character );
dt_subset:TEST_RESULT << set formula( If( :COMMENTS == "Parametric", Char( :NUMERIC_RESULT ), :COMMENTS ) );
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)No puede tener valores mixtos en una columna. Podría agregar Char() alrededor de su: NUMERIC_RESULT si esos son valores numéricos
Column(dt_subset, "TEST_RESULT") << set formula(If(:COMMENTS == "Parametric", Char(:NUMERIC_RESULT), :COMMENTS));
Y cuando divida la columna, simplemente configure el tipo de datos como desee. Tenga en cuenta que si tiene valores de caracteres en la columna numérica, se cambiarán a faltantes.
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)Gracias ! agregar el 'char ()' resolvió el primer problema.
Pero ahora, tengo otros 2 problemas, después de dividir la columna fusionada.
Lo estoy dividiendo por otra columna, por lo que todas las columnas resultantes tienen un tipo de datos (cadena o numérico), hay ~ 150 columnas diferentes.
Los problemas :
1. Todas las columnas divididas todavía tienen la fórmula original de la columna combinada. ¿Cómo convierto la columna de origen en un valor (como en Excel - pegar valores especiales)?
2. Todas las columnas divididas se generan como tipo de carácter, y eso no es lo que quería, quiero que tengan un tipo automático en función de su contenido, al igual que
cuando abro un archivo csv: JMP establece el tipo automáticamente, por lo que si todos los valores en una columna son numéricos, obtendrá un tipo numérico.
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)Aquí hay un pequeño fragmento de código que pasará por una tabla de datos y convertirá cualquier columna de caracteres que se compone de todos los valores numéricos válidos, a un tipo de datos numéricos;
Names Default To Here( 1 );
dt = Current Data Table();
For Each( {value, index}, dt << get column names( string ),
If( Column( value ) << get data type == "Character",
vals = Column( value ) << get values;
nonMissing = Col Number( As Column( value ) );
Column( value ) << set data type( numeric ) << modeling type( continuous );
If( nonMissing != Col Number( As Column( value ) ),
Column( value ) << set data type( character ) << set values( vals )
);
)
);Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)Gracias ! eso parece exactamente lo que necesito, pero desafortunadamente no funciona.
Traté de depurar, la primera línea está funcionando, obteniendo una lista de nombres de columnas.
El segundo obtiene el siguiente error. ¿alguna idea?

Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)Solo como comentario:
No es una restricción, pero es la mentalidad básica de JMP que cada columna tiene un tipo de datos definido, que puede configurar activamente según sus necesidades.
El tipo de datos, una vez configurado correctamente, hace que los siguientes análisis sean tan fáciles de realizar.
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)Creo que está usando
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// JMP16 "For Each"
dt << get column names( string );
For Each( {value, index}, dt << get column names( string ), Print( value ) );
// JMP <16 "For"
col_lst = dt << get column names( string );
For( i = 1, i <= N Items( col_lst ), i++,
Print( col_lst[i] )
);
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)
¡Gracias, ya está funcionando!
ahora solo una cosa: ¿cómo me deshago de la fórmula original? Solo quiero el valor resultante de la fórmula, ¿es posible?
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)
bueno algo asi trabajando.. Encontré un problema. Había una columna con el tipo de datos 'char' que tenía un contenido de cadena fijo: "R001"
después de ejecutar el script, cambia a tipo numérico, con valor de '1'. ¿Por qué sucede esto?
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)JMP interpreta la R seguida de un valor completamente numérico como una moneda.La notación del Rand sudafricano tiene la forma: R123 o R55.67, etc. Entonces, JMP lo interpreta como valores numéricos.Puede agregar una verificación al código para verificar esta excepción.
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)
wow no lo vi venir
¡muchas gracias por tu ayuda!
Re: fusionar valores de 2 columnas en una (valores numéricos y de caracteres mixtos)JMP 17 tendrá un argumento opcional para num("R001", < ) para evitar este comportamiento.