JSL Creación de una nueva columna a partir de componentes en otra columna Scripting de caracteresSupongamos que tengo una columna de entrada y quiero crear una nueva columna basada en su contenido. La columna de entrada siempre tendrá un total de 8 barras como se muestra a continuación. Sin embargo, a veces habrá datos reales de diferentes longitudes entre ellos. De este modo... Quiero indicar en una nueva columna cuando hay datos con una simple 'Y' y todos los demás lugares serían 'N' en una gran cantidad de filas.
Columna de entrada Desired_Output
//////// NNNNNNNNN
//////// NNNNNNNNN
////a/b/// NNNNYYNNN
a//////// YNNNNNNNN
Tabla de datossecuencias de comandosRe: JSL Creación de una nueva columna a partir de componentes en otra columna Scripting de caracteres¡Muchas gracias! Y a todos los demás que ayudaron. El Formula2 lo logró.
Re: JSL Creación de una nueva columna a partir de componentes en otra columna Scripting de caracteresSin embargo, para devolver 8 caracteres en cada caso, puede usar otra fórmula, consulte la fórmula 2 en esa tabla:
New Table( "Test 3",
Add Rows( 4 ),
New Column( "Input Column",
Character,
"Nominal",
Set Values( {"////////", "////////", "////aaaa/b///", "aBCD////////"} )
),
New Column( "Formula",
Character,
"Nominal",
Formula(
Regex(
Regex(
Regex( :Input Column, "[a-z]+", "A", GLOBALREPLACE, IGNORECASE ),
"[^/]",
"Y",
GLOBALREPLACE
),
"/",
"N",
GLOBALREPLACE
)
),
Set Display Width( 246 )
),
New Column( "Formula2",
Character,
"None",
Formula(
item_lst = Words( Substitute( :Input Column, "/", "/;" ), ";" );
result_str = "";
For( i = 1, i <= N Items( item_lst ), i++,
If( item_lst[i] == "/",
result_str = result_str || "N",
result_str = result_str || "Y"
)
);
result_str;
),
Set Selected,
Set Display Width( 394 )
)
)Re: JSL Creación de una nueva columna a partir de componentes en otra columna Scripting de caracteresPuede agregar solo otra expresión regular, que reemplaza muchos caracteres por uno:
Names Default To Here( 1 );
dt = New Table( "Test",
Add Rows( 4 ),
New Column( "Input Column", Character, "Nominal", Set Values( {"////////", "////////", "////aaaa/b///", "aBCD////////"} ) ),
New Column( "Formula",
Character,
"Nominal",
Formula( Regex( Regex( Regex( :Input Column, "[a-z]+", "A", GLOBALREPLACE, IGNORECASE ), "[^/]", "Y", GLOBALREPLACE ), "/", "N", GLOBALREPLACE ) ),
Set Selected,
Set Display Width( 246 )
)
);Re: JSL Creación de una nueva columna a partir de componentes en otra columna Scripting de caracteresGracias por la respuesta. No estaba familiarizado con esta función y es útil/útil. Esto se ocupa de las barras, pero me da una 'Y' para cada letra de la cadena. Solo quiero una 'Y' para todos los caracteres entre las barras.Re: JSL Creación de una nueva columna a partir de componentes en otra columna Scripting de caracteresPodrías usar doble expresión regular en una fórmula:
Regex(Regex(:Input Column, "[^/]", "Y", GLOBALREPLACE), "/", "N", GLOBALREPLACE)
Una expresión regular para reemplazar todo lo que no sea "/" con "Y" y otra para reemplazar "/" con "N".