Elimina colonne con riferimento alla formula in JSLCIAO,
Ho uno script in cui vorrei eliminare le colonne che contengono un riferimento alla formula.Questo è facile da fare in JMP: quando elimino le colonne non necessarie ricevo un "Avviso JMP" e seleziono "Rimuovi formula".Posso quindi eliminare le colonne dei metadati, ma la tabella mantiene il risultato calcolato nella colonna della formula.
Il mio problema è: come posso scriverlo?Esiste un'opzione per eliminare una colonna di metadati che contiene un riferimento a una formula?Sto usando JMP10. Si prega di vedere l'esempio qui sotto.
/*
bigClass = Open( "$SAMPLE_DATA/Big Class.jmp" );
bigClass << New Column( "height / weigh", Numeric, Continuous, Format( "Best", 12 ), Formula( :height / :weight ) );
bigClass << Delete Column( "height" );
bigClass << Delete Column( "weight" );
*/
Grazie!
Ri: Elimina colonne con riferimento alla formula in JSLRisulta che ho già inviato qualcosa di questo tipo alla lista dei desideri di JMP ed ero in contatto con il supporto di JMP (nessuna soluzione chiara al momento, ma una soluzione alternativa che non ho ancora avuto il tempo di integrare).
Voce della lista dei desideri: Rimozione dinamica della formula
Un paio di soluzioni aggirano le opzioni delle mie chat con il supporto JMP.
Names Default to here(1);
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "Test 1", Numeric, Formula( :height + :weight ) );
dt << New Column( "Test 2", Numeric, Formula( :height + :age ) );
keepCols = AssociativeArray({"name","Test 1","sex"});
formList = {};
formCols = {};
for(i=1,i<=ncol(dt),i++,
if(IsEmpty(Column(dt,i) << get formula),
Empty()
,
insertInto(formList,Column(dt,i) << get formula);
insertinto(formCols,i);
);
show(formList,formCols)
);
existingCols = dt << get column names(string);
For(i=1,i<=nitems(existingCols), i++,
there = keepCols[existingCols[i]];
If(there == 0,
for(j=1,j<=nitems(formList),j++,
nowCol = existingCols[i];
If(Contains(char(formList[j]),nowCol) > 0,
Print(nowCol);
//show(formCols[j]);
Try(Column(dt,formCols[j]) << delete formula);
,
Empty()
)
);
//dt << delete columns(eval(existingCols[i]))
)
);
For(i=1,i<=nitems(existingCols), i++,
there = keepCols[existingCols[i]];
If(there == 0,
dt << delete columns(eval(existingCols[i]))
)
);
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "Test 1", Numeric, Formula( :height + :weight ) );
colList = {:age, :height, :name};
colListStr = {"age", "height", "name"};
failed = {};
//dt << Delete Columns( :age ); //works
//dt << Delete Columns( colList[1] ); //fails
//dt << Delete Columns( Column( colListStr[1] ) ); //works
For( i = 1, i <= N Items( colList ), i++,
//dt << Clear Column Selection;
//colList[i] << Set Selected;
str = "";
//str = Log Capture( dt << Delete Columns( colList[i] ) ); //fails
//str = Log Capture( dt << Delete Columns() ); //works for selected columns
str = Log Capture( dt << Delete Columns( Column( colListStr[i] ) ) ); //works
Show( str );
If( str != "",
Insert Into( failed, colList[i] )
);
);
Show( failed );
Ri: Elimina colonne con riferimento alla formula in JSLNon ho ancora trovato una soluzione. La cosa più dolorosa da codificare che mi è venuta in mente sarebbe essenzialmente prendere tutte le formule e creare una mappa della colonna della formula sulle variabili locali necessarie per quella formula. Ciò potrebbe quindi essere utilizzato dinamicamente quando è necessario eseguire l'eliminazione delle colonne.
Presumo che qualcosa del genere sia la base su come JMP sa attivare l'avviso in primo luogo. Mi ci vorrebbe un po' di tempo per trovare qualcosa di pulito per quanto sopra, quindi idealmente, JMP potrebbe creare una funzione JSL per darci una capacità booleana o qualcosa del genere
Probabilmente finirò per chattare con il supporto JMP per una soluzione più ufficiale (o chiederne una nella lista dei desideri).
Ri: Elimina colonne con riferimento alla formula in JSLCiao Nathan,
Hai trovato una soluzione alla domanda/problema pubblicato?
Sto cercando di fare lo stesso... Vorrei eliminare una colonna utilizzata in una formula in una o più altre colonne.
Voglio renderlo dinamico piuttosto che specificare un " col << cancella formula" istruzione per una particolare colonna.
Ri: Elimina colonne con riferimento alla formula in JSLÈ un po' vecchio, ma ho un'aggiunta a questa e immagino che proverò prima qui 
Cosa succede se non conosco le colonne con la formula che faranno riferimento alla colonna che desidero eliminare. Sto cercando di creare qualcosa di dinamico e vorrei precodificarlo in modo che elimini automaticamente la formula in caso di conflitto (proprio come se lo facessi manualmente), ma non riesco a trovare alcuna sintassi che lo consenta.
il metodo "più semplice" è semplicemente rimuovere tutte le formule in modo che non sia mai un problema, ma sembra un po' più estremo di quanto dovrebbe essere.
Ri: Elimina colonne con riferimento alla formula in JSL@DonHil Colonna("nome colonna") << cancella formula;
Ri: Elimina colonne con riferimento alla formula in JSLPuoi dirmi come hai risolto questo problema?Ho provato a rimuovere la formula, ma questo ha rimosso i valori nella colonna originale.Devo eliminare una colonna che contiene un riferimento a una colonna.Grazie.
Ri: Elimina colonne con riferimento alla formula in JSLNon importa.Ho trovato la risposta:
https://community.jmp.com/message/48129#48129