Cómo crear una secuencia de comandos de una columna agregada a partir de una lista variable de referencias de columnaTengo una lista de columnas que necesito agregar automáticamente. Actualmente, lo que estoy intentando es algo como esto, que no está dando ningún resultado.
cols = {:col1, :col2, :col3}
Eval(Eval Expr(
dt << New Column(
Formula(Minimum(Expr(cols))
)
)También intenté generar esto de forma interactiva y guardar la fórmula de la columna. Funciona, pero me da
Minimum(:col1, :col2, :col3)
que no estoy seguro de cómo volver a crear en JSL.
Compartir y comunicar resultadosRe: Cómo crear una secuencia de comandos para una columna agregada a partir de una lista variable de referencias de columnaAquí hay dos métodos que puede probar:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cols = dt << Get Column Names( "String" );
col list = {};
For Each( {col}, cols,
If( Ends With( col, "t" ), Insert Into( col list, As Name( col ) ) )
);
Eval( Eval Expr(
dt << New Column( "NEW_COL", "Numeric", <<SET formula=""></SET>Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cols = dt << Get Column Names( "String" );
col list = Expr( Min() );
For Each( {col}, cols,
If( Ends With( col, "t" ), Insert Into( col list, As Name( col ) ) )
);
Eval( Eval Expr(
dt << New Column( "NEW_COL", "Numeric", <<SET formula=""></SET>Re: Cómo crear una secuencia de comandos para una columna agregada a partir de una lista variable de referencias de columnaEstoy adivinando cómo se ve la lista inicial de nombres de columnas, pero si es solo una lista sin comillas o nombres de columnas, el siguiente script es un ejemplo de la única forma de procesarlo.
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "/C:/Program Files/SAS/JMPPRO/15/Samples/Data/Big Class.jmp" );
colNames = dt << get column names;
theList = {};
For Each( {col}, colNames,
Show( col );
If( As Column( col ) << get data type == "Numeric",
Insert Into( theList, As Column( col ) << get name )
);
);
theString = Concat Items( theList, ",:" );
Eval( Parse( "dt << new column(\!"test\!",formula(minimum(:" || thestring || ")));" ) );Re: Cómo crear una secuencia de comandos para una columna agregada a partir de una lista variable de referencias de columnaMi lista real se define a través de la coincidencia de expresiones regulares según la entrada del usuario. El script itera a través de la lista de nombres de columna de la tabla de datos e inserta los que coinciden en una lista.
For Each ({col}, colNames,
If (condition... Insert Into(list, :Column(col))
)Intenté cambiar la sintaxis a :(Columna(columna)) pero eso resultó en una lista de elementos faltantes en lugar de lo que había estado obteniendo anteriormente ( {Columna(columna1), Columna(columna2), ...} ). Lo mismo ocurre con Como columna (col) .
Estoy usando JMP 16.
Re: Cómo crear una secuencia de comandos para una columna agregada a partir de una lista variable de referencias de columnaVerifique la definición de su lista y asegúrese de que se especifique ":" delante del nombre de cada columna.
¿Qué versión de JMP estás usando?
Re: Cómo crear una secuencia de comandos para una columna agregada a partir de una lista variable de referencias de columna¡Gracias por la rápida respuesta! Intenté esto, pero parece dejar la fórmula de la columna sin resolver (como Mínimo (Eval (cols))).
Re: Cómo crear una secuencia de comandos para una columna agregada a partir de una lista variable de referencias de columnaHola,
Pruebe esta sintaxis:
Names default to Here (1);
dt = Current Data Table ();
cols = {:col1, :col2, :col3};
dt << New Column("TEST", numerical, continuous, << Formula(Minimum(Eval(cols))));
Mejor,
TS
Re: Cómo crear una secuencia de comandos para una columna agregada a partir de una lista variable de referencias de columnaEsto podría dar algunas ideas. Usar lista de columnas en fórmulas
Ver más...