Extraer texto de una columna de cadenasHola,
Soy un poco novato en lo que respecta a la creación de scripts en JMP y estoy tratando de escribir un script que pueda extraer números específicos de una cadena y crear nuevas columnas para cada uno. Cada número siempre iría seguido de los caracteres "DX" o "DY". Por ejemplo:
D113U_NTCH_CM_MEDICIÓN_CD_SEM_{2UM_X6_NTCH_CM_IMAGEN}_DX7DY11SDX11SDY15_2024-12-06_18-57-42.jpg
Me gustaría extraer y crear estas columnas:

Por supuesto, me gustaría repetir este proceso en toda una columna de datos. Agradecería cualquier consejo. ¡Gracias!
Automatización y scriptingRe: Extraer texto de una columna de cadenas¿Conoce de antemano todos los patrones posibles (DX, DY, ...)? ¿Siempre se encuentra en el mismo lugar (después de }_ y antes de la fecha)?
Re: Extraer texto de una columna de cadenasSi tuviera una columna llena de esos nombres de archivo, haría un Cols -> Recode, triángulo rojo superior izquierdo -> "Replace String" y luego ingresaría "S?D[XY](\d+)" y reemplazaría con "%\1%" con "Use regular expressions" activado. Luego puede dividir la columna (Cols -> Utilities -> Text to Columns...") e ingresar "%", lo que le dará 6 columnas nuevas, con el prefijo, DX, DY, SDX, SDY y el sufijo, por ejemplo:
| Columna 1 2 | Columna 1 3 | Columna 1 4 | Columna 1 5 | Columna 1 6 | Columna 1 7 |
| D113U_NTCH_CM_MEDICIÓN_CD_SEM_{2UM_X6_NTCH_CM_IMAGEN}_ | 7 | 11 | 11 | 15 | _2024-12-06_18-57-42.jpg |
Luego puedes cambiar el nombre de las columnas a DX, DY, etc.
Si sus datos reales son más complicados, es posible que este proceso también deba ser un poco más complicado.
Re: Extraer texto de una columna de cadenasLindo : )
Quizás empezar con
word(8, filename,"_")
de tal manera que funcione también para el lote DX11A .
Re: Extraer texto de una columna de cadenasMe ayudó, muchas gracias por la ayuda.
Ver más...Para extraer texto de una columna de cadenas en JMP, puedes usar fórmulas o scripts. Los métodos comunes incluyen expresiones regulares para la coincidencia de patrones o funciones de subcadena para aislar texto específico. La función **Regex()** es versátil para patrones complejos, mientras que las extracciones más simples pueden utilizar las funciones **Left(), Right(),** o **Substring()** de manera efectiva. Durante un semestre particularmente desafiante, me encontré con
https://canadianwritings.com/ y resultó ser un salvavidas. Necesitaba ayuda con un ensayo sobre literatura moderna, y el servicio me proporcionó un trabajo bien investigado y perfectamente estructurado. El escritor siguió mis instrucciones al pie de la letra y el resultado final fue impresionante. Además, entregaron el ensayo antes de la fecha límite, lo que me dio tiempo para revisarlo correctamente antes de enviarlo.
Re: Extraer texto de una columna de cadenasHe aquí un enfoque alternativo:
Dada la tabla de datos

El siguiente script creará directamente

Names Default To Here( 1 );
// Create and example data table
dt = New Table( "Example",
Add Rows( 1 ),
New Column( "File",
Character,
"Nominal",
Set Values(
{
"D113U_NTCH_CM_MEAS_CD_SEM_{2UM_X6_NTCH_CM_IMAGE}_DX7DY11SDX11SDY15_2024-12-06_18-57-42.jpg"
}
)
)
);
// Add the new columns to the data table
dt << New Column( "DX" );
dt << New Column( "DY" );
dt << New Column( "SDX" );
dt << New Column( "SDY" );
For Each Row(
// Separate the section of the File name into just the DX,DY,SDX,SDY part
string = Word( 1, Substr( :file, Contains( :file, "_DX" ) + 1 ), "_" );
// Change the string into a assignment statements
Substitute Into( string, "SDX", ";:SD_X=", "SDY", ";:SD_Y=", "DX", ";:D_X=", "DY", ";:D_Y=", "_", "" );
string = Substr( string, 2 ) || ";";
// Execute the assignment statements
Eval( Parse( string ) );
);