Preparazione dei nomi delle colonne dell'elenco per uso futuroCiao, sto cercando di recuperare e preparare un elenco di nomi di colonne da salvare in una variabile da utilizzare in seguito. Il problema è che << Get Column Names() restituisce tutto come un elenco di stringhe. Di seguito è riportato come ho aggiunto un " : " all'inizio di ogni stringa di elemento e quale potrebbe essere un potenziale utilizzo di questo. C'è ancora molto da fare.
names default to here(1);
dt = current data table();
col_names = dt << Get Column Names( ); // retrieves all col names
col_list = {}; // list for holding col names
// loop formats names in way usable to be called on as cols, not strings
for( i = 1 , i <= N items( col_names ), i++,
list_item = ":" || list_item;
Insert Into( col_list, list_item );
);
dt << Ungroup Scripts( col_list ); // example usageUn altro esempio potrebbe essere l'utilizzo di questo elenco in qualcosa del tipo:
Adatta modello( Y( col_list ) ....
Cosa ottengo: { "ColA", "ColB" }
Cosa voglio: { :ColA, :ColB }
Ho sfogliato e trovato più thread correlati su questo, ma l'uso dei nomi delle colonne come input per una funzione è qualcosa in cui non mi sono imbattuto.Qualche consiglio?
AnaliticaScriptingfinestreOggetto: Preparazione dei nomi delle colonne dell'elenco per uso futuroCiao,
Ho avuto lo stesso problema tempo fa. La soluzione è semplice: è necessario valutare l'elenco per restituire la serie di colonne.
dt << Ungroup Scripts( Eval (col_list ));
Migliore,
ST
Oggetto: Preparazione dei nomi delle colonne dell'elenco per uso futuroSe vuoi usare colonne formattate come :colname, puoi ottenerle ad esempio con qualcosa del genere:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = dt << Get Column Names(Continuous, "String");
// dt << Get Column Reference(); /* all references */
/* one option */
col_list1 = dt << Get Column Reference(col_names);
/* second option */
col_list2 = Transform Each({col_name}, col_names,
Name Expr(AsColumn(Column(dt, col_name))); /* Column() isnt necessary but makes it more robust */
);
show(col_list1, col_list2);
Di solito li uso come stringhe e poi uso Column() o As Column() a seconda della situazione (con alcuni Name Expr() nel mix).
Abbastanza spesso è sufficiente usare un elenco di stringhe di nomi di colonne se lo combini con Eval().
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cities.jmp");
col_names = {"OZONE", "CO", "SO2", "NO", "PM10"};
//obj = dt << Cluster Variables(Y(:OZONE, :CO, :SO2, :NO, :PM10));
obj = dt << Cluster Variables(Y(Eval(col_names)));
col_list = Transform Each({col_name}, col_names,
Name Expr(AsColumn(Column(dt, col_name)));
);
obj = dt << Cluster Variables(Y(col_list)); /* wont work, see log for error */
/* Using Eval() and Eval Expr() */
cv_expr = EvalExpr(
obj = dt << Cluster Variables(Y(Expr(col_list)));
);
Eval(cv_expr);
/* using only Eval inside Y() should also work like earlier */
obj = dt << Cluster Variables(Y(Eval(col_list)));
Oggetto: Preparazione dei nomi delle colonne dell'elenco per uso futuro@Thierry_S & @jthi - grazie ad entrambi! eval() era quello che stavo cercando! Ho capito che la colonna era un'espressione, ma mi ero completamente dimenticato di questo comando.