creazione di formule utilizzando i nomi delle colonne esistentiNames Default To Here( 1 );
dt = Current Data Table();
numcol=dt << Get Column Names(Numeric);
charcol=dt << Get Column Names( Character);
For( k = 1, k <= N Items( numcol ), k++,
colname=column(numcol[k]) <<GET name=""></GET>
Ciao utenti JMP,
Ho una tabella di dati di cui ho bisogno per eseguire alcune conversioni su colonne numeriche in base a criteri predefiniti.
Viene visualizzato l'errore "L'espressione non si adatta ai tipi di colonna disponibili nella riga 1 nell'accesso o nella valutazione di" Argomento errato "".
Qualche idea su come risolvere questo? Apprezzato!
SceneggiaturaRe: creazione di formule utilizzando nomi di colonne esistentiHai 2 problemi in corso qui.
- Quando una formula viene presentata in una nuova colonna, non viene elaborata prima di essere aggiunta come formula.Pertanto, quando si specifica
:Column(dt, colname)
JMP non lo cambia nel nome della prima colonna numerica, quindi nella seconda, ecc.L'autore JSL deve utilizzare il codice che espanderà il riferimento nell'istruzione JSL completa/completata prima di passarla all'elemento Format
- I nomi delle colonne nella tabella dei dati, ad esempio 1, 2, 3, 4 ecc., causeranno problemi nell'interpretazione di JMP, a meno che non si indichi specificamente che devono essere interpretati come nomi di colonna.Pertanto, è necessario utilizzare la struttura :"nome colonna"n
Di seguito è riportata una rielaborazione del codice che produce le nuove colonne desiderate
Names Default To Here( 1 );
dt = Current Data Table();
numcol = dt << Get Column Names( Numeric );
charcol = dt << Get Column Names( Character );
For( k = 1, k <= N Items( numcol ), k++,
colname = Column( numcol[k] ) << Get Name;
Eval(
Substitute(
Expr(
dt << New Column( "site" || numcol[k],
formula(
If(
:ID == "item5", (__colname__ * 0.5) / 20,
:ID == "item8", (__colname__ * 0.8) / 20,
__colname__
)
)
)
),
Expr( __colname__ ), Parse( ":\!"" || colname || "\!"n")
)
);
);Re: creazione di formule utilizzando nomi di colonne esistentiGrazie Jim funziona!