Script concatenar columnasHola
He escrito un script para concatenar columnas en la columna "PIN_NAME"
Mi problema es que no tengo una cantidad constante de columnas.
Debería concatenar la columna desde Test_name 10 hasta Test_name 15, pero algunas veces solo tengo Test_name 10 hasta Test_name 13 (por ejemplo)
y recibí un error porque el script intenta concatenar Test_Name 14 y Test_Name 15 que no existen.
¿Me pueden ayudar con este problema?

Columna(dt_split,"PIN_NAME") << Formula(Char(:TEST_NAME 10 || " " ||
:NOMBRE_PRUEBA 11 || " " ||
:NOMBRE_PRUEBA 12 || " " ||
:NOMBRE_PRUEBA 13 || " " ||
:NOMBRE_PRUEBA 14 || " " ||
:NOMBRE_PRUEBA 15)
);
secuencias de comandosventanasRe: Script concatenar columnasEsto requiere que las columnas de interés sean columnas de caracteres, tenga JMP16 y que las columnas pasen la expresión regular "Columna \d{2}"
Idea general
- Obtener una lista de nombres de columnas
- Cree una lista de nombres de columnas que le interesen usando algún filtro (estoy usando expresiones regulares)
- Construya la expresión para la fórmula con la lista de 2.
- Use Eval (EvalExpr ()) para agregarlo a una nueva columna con una fórmula
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(0),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"a"})),
New Column("Column 2", Character, "Nominal", Set Values({"b"})),
New Column("Column 10", Character, "Nominal", Set Values({"c"})),
New Column("Column 11", Character, "Nominal", Set Values({"d"})),
New Column("Column 12", Character, "Nominal", Set Values({"e"}))
);
col_names = dt << Get Column Names(Character, "String");
list_expr = Expr(List());
For Each({col_name}, col_names,
If(!IsMissing(Regex(col_name, "Column \d{2}")),
Insert Into(list_expr, Name Expr(AsColumn(Column(dt, col_name))));
);
);
// show(Name Expr(list_expr));
Eval(EvalExpr(
dt << New Column("PINNAME", Character, Nominal,
Formula(Concat Items(Expr(list_expr), " "))
);
));Re: Script para concatenar columnasSi tienes Jmp17, las cosas serán mucho más fáciles.
Luego puede llamar a una función desde Nueva columna de fórmula (sin restricción para columnas con tipo carácter):)
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Space" ),
Columns( :name, :age, :sex, :height, :weight )
);
Mejor aún: puedes incluso usar variantes que están deshabilitadas en el menú Nueva columna de fórmula al hacer clic derecho.
Nuevo menú de columnas de fórmulas: no deshabilite las variantes
como la concatenación de entradas numéricas y el conteo de entradas de columnas de caracteres:
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Space" ),
Columns( :height, :weight )
);
);
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Aggregate" ), "Count" ),
Columns( :name ),
Group By( :sex )
);
deshabilitado en el menú Nueva columna de fórmula con clic derecho - ¡ARGH!