Creazione di nuove colonne e inserimento di formula in base alle celle della colonna originaleCiao,
Sono uno scriptor JMP inesperto e sto provando a scrivere il mio primo grande (er) script. Sto avendo problemi con una parte. Ecco cosa sto cercando di fare: ho varie tabelle di dati su cui userò questo script. Vorrei che lo script guardasse tutte le colonne, escludendo la prima colonna (i numeri delle colonne e delle righe varieranno per ogni tabella di dati) e crei una nuova colonna per ogni colonna già presente nella tabella. Vorrei che il nome di ciascuna delle nuove colonne fosse uguale a ciascuna delle colonne originali ma con un "_code" alla fine e preferibilmente posizionato accanto alla colonna originale nella tabella. All'interno di ogni nuova colonna vorrei che la formula fosse un'istruzione if / then. Se "Colonna A" ha il testo "<" nella cella, quindi 0, altrimenti 1.
Spero che la mia spiegazione abbia un senso. Ho postato la mia sceneggiatura anche se sembra che si rompa alla riga 8 e non sono sicuro del perché.
Grazie per tutto l'aiuto!
Lacey
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 2, i <= nitems( col_list ), i++,
data_col = ":" || col_list[i];
code_col = col_list[i] || "_Code";
str = evalinsert (
"\[dt << New Colum ("^code_col^", Numeric, Continuous,
Format("Best",12),
Formula(If( Contains( "^code_col^", "<" ),
0,
1
)));
);]\");
eval(parse(str));
);Ri: Creazione di nuove colonne e inserimento di formula in base alle celle della colonna originaleSì, l'ho fatto funzionare. Grazie mille!
Ri: Creazione di nuove colonne e inserimento di formula in base alle celle della colonna originaleLa funzione: Name () è progettata per gestire questo problema. Di seguito è riportata una modifica che ho apportato al tuo script che credo risolverà il problema. Non ho provato questa modifica, ma penso che funzionerà. In caso contrario, dovresti essere in grado di vedere quello che sto cercando di fare, e dovresti essere in grado di farlo funzionare.
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code" ,
Expr( __OrigCol__ ), Parse( ":Name(\!"" || col_list[i] || "\!:)" )
)
)
);Ri: Creazione di nuove colonne e inserimento di formula in base alle celle della colonna originaleCiao Jim,
Sono andato a provare lo script su una nuova tabella dati e mi sono imbattuto in un problema con i miei nomi di colonne. Mi occupo di dati ambientali e molte volte i nomi degli analiti (cioè i nomi delle colonne) avranno simboli nel nome come "-", "[", "]", "(", ")" e / o " ". Quando ho eseguito la sceneggiatura, ho errato sulla prima colonna che era "3-Metil-1-butene". C'è una correzione per questo?
Grazie,
Lacey
Ri: Creazione di nuove colonne e inserimento di formula in base alle celle della colonna originaleHa funzionato alla grande! Grazie!
È stato un errore che ho lasciato quella "colonna 13" nel datatable. Ero solo io che mi assicuravo che la mia dichiarazione fosse funzionante e ho dimenticato di cancellarla quando l'ho pubblicata online. Quindi l'ho appena eliminato dal mio datatable, ho cambiato il 13 in un 2 nella meravigliosa sceneggiatura che hai inviato e poi ha funzionato come un incantesimo.
Grazie mille!
Lacey
Ri: Creazione di nuove colonne e inserimento di formula in base alle celle della colonna originaleEcco una modifica del tuo codice che credo soddisfi tutte le tue esigenze. Un elemento che ho dovuto trattare, è che le colonne che inizi con (2-13) devono essere carattere, quindi la formula non ha errori. La colonna 13 non visualizza lo script, poiché si tratta di una colonna formula che non può essere modificata in caratteri, poiché non appena viene eseguita la formula, forza la colonna a essere numerica.
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code",
Expr( __OrigCol__ ), Parse( ":" || col_list[i] )
)
)
);