Gestione intelligente delle colonne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />gente,
Come gestisci le colonne in modo intelligente?
Diciamo che ho una sceneggiatura e un tavolo.
Script crea alcune colonne in esso.
Mentre lavoro su script, lo faccio girare più volte su un tavolo. Quando lo script crea una colonna, finisce con la creazione di molte colonne con lo stesso nome ma un numero diverso. Se faccio riferimento alla colonna creata per nome in seguito nello script, fare riferimento alle vecchie colonne (come "Nuova colonna", ma non "Nuova colonna 23").
Il modo di affrontarlo è eliminare una colonna con quel nome prima di crearla. I problemi iniziano quando si usa lo script per la prima volta sulla nuova tabella - quando non ci sono colonne da eliminare ....
Ad ogni modo, come realizzeresti l'aggiunta della smart column?
Alcuni come:
Voglio creare una nuova colonna con questo nome. C'è qualche colonna con questo nome o nome che è questo nome e un numero (colonne pubblicizzate)? Se sì, quindi eliminarli e creare la mia colonna. Se non ci sono colonne di questo tipo, crea una nuova colonna con questo nome ...
Ri: gestione intelligente delle colonneOh, è stato facile:
dt = Aperto ( "$ sample_data \ Big Class.jmp" ) ;
NEW_COLUMN = "BMI" ;
new_formula = "7 *: peso /: altezza / altezza" ;
SmartColumn = funzione ({ NEW_COLUMN , new_formula } ,
// ----- Avvia SmartColumn
expr_missing = Eval Insert ( "col = dt << Nuova colonna (nuova colonna, formula (^ nuova_formula ^));" ) ;
expr_exists = Eval Insert ( "col = Column (new_column) << Imposta la formula (^ new_formula ^) << EvalFormula;" ) ;
Se ( Manca ( È Scriptable ( Provare ( Colonna ( NEW_COLUMN ) ) ) ) ,
eval ( analizzare ( expr_missing )) ;
, eval ( analizzare ( expr_exists )) ;
) ;
// - Fine SmartColumn
) ;
SmartColumn ( NEW_COLUMN , new_formula ) ;
Ri: gestione intelligente delle colonneOk, penso di averlo inchiodato.
Se scritto come una funzione, sarebbe solo una sostituzione intelligente di aggiungere colonna.
Richiederebbe il nome della colonna, la formula desiderata e, se la colonna con quel nome esiste, aggiorna la formula e la valuta, se non esiste, crea e imposta la formula. Nessun problema se quella colonna è riferita da un'altra parte in altre formule.
Qualcuno può aiutarmi con la sintassi di scriverlo come una formula pronta per l'uso?
Successivamente aggiungerei altre proprietà di colonna come argomenti di funzione.
dt = Aperto ( "$ sample_data \ Big Class.jmp" ) ;
NEW_COLUMN = "BMI" ;
new_formula = "700 *: peso /: altezza / altezza" ;
// ----- Avvia SmartColumn
expr_missing = Eval Insert ( "col = dt << Nuova colonna (nuova colonna, formula (^ nuova_formula ^));" ) ;
expr_exists = Eval Insert ( "col = Column (new_column) << Imposta la formula (^ new_formula ^) << EvalFormula;" ) ;
Se ( Manca ( È Scriptable ( Provare ( Colonna ( NEW_COLUMN ) ) ) ) ,
eval ( analizzare ( expr_missing )) ; ,
eval ( analizzare ( expr_exists )) ;
) ;
// - Fine SmartColumn
Ri: gestione intelligente delle colonneIl mio errore sul mancante "," nel codice che ti ho mandato. Mi scuso per quello.
La mia intenzione, con il codice, è di darti un modo per rilevare se una determinata colonna è presente.
Se hai creato una colonna che ha una formula che utilizza la colonna che desideri eliminare, il modo più semplice per interrompere tale dipendenza è di trasformare i valori nella colonna che ha la formula che punta alla colonna che vuoi eliminare, in effettiva valori, piuttosto che valori basati su formula. Tutto ciò che devi fare per farlo è rimuovere la formula dalla colonna e JMP convertirà i valori in dati reali. Fatto ciò, la colonna originale può essere cancellata.
Nomi predefiniti qui ( 1 );
dt = Aperto ( "$ SAMPLE_DATA \ big class.jmp" );
// Crea una nuova colonna con una formula
dt << Nuova colonna ( "Rapporto" , Formula (: Altezza / peso));
// Rimuovi la proprietà formula e i dati nella colonna
// viene convertito in valori reali, non valori virali
dt: Ratio << cancella proprietà ( "Formula" );
Ri: gestione intelligente delle colonneIn realtà, lo riprenderò. Non consentirà di eliminare le colonne, se vi si fa riferimento in formule di altre colonne.
Ogni altro modo?
È persino possibile cancellare i dati o modificare una formula per una colonna, che l'altra colonna ha nella sua formula?
Ri: gestione intelligente delle colonneFunzionerà se metti "," prima del secondo "dt".
E non usi "Throw ()" con "Try ()"?
Ri: gestione intelligente delle colonneEcco cosa uso:
If (Try (colonna (dt, "") << nome get, "")! = "" Dt << cancella colonne (""));