Solo manipolando i dati della colonna una voltaCiao!
Ho un problema in cui sto moltiplicando una colonna di dati (un gruppo di Max Currents) per 100 per ottenere le densità di corrente massime, e così quando eseguo lo script lo fa bene:
colonna ( 13 ) << imposta valori ( ( Colonna ( 13 ) << ottenere come matrice ) * 100 ) ;
colonna ( 13 ) << imposta nome ( "Max Jc (mA / um ^ 2)" ) ;
Ma se eseguo lo script più volte continua a moltiplicare i dati di un centinaio e devo chiudere il datatable e riaprirlo.
C'è un modo per farlo aggiornare solo una volta?
Grazie,
Tyler
Ri: solo manipolando i dati della colonna una voltaBasato su @pmroz Inserimento, vorresti cambiare il tuo codice come segue:
//define columns to search for
colSearch1 = "Corrected Area";
colSearch2 = "Max Ic";
// Get Column Names from the data table
ColNames = dt << Get Column Names("string");
//search for desired columns
colNum1 = Contains(ColNames,colSearch1);
colNum2 = Contains(ColNames,colSearch2); Ora hai il riferimento per colNum1 e colNum2 di cui hai bisogno. In alternativa, come @pmroz spiegato:
Col1 = column(dt,"Corrected Area") ;
Col2 = column(dt,"Max Ic") ;
Ri: solo manipolando i dati della colonna una voltaHai solo bisogno di ottenere i nomi delle colonne una volta. Carica i nomi delle colonne in un elenco.
Ma puoi anche fare riferimento alle colonne direttamente usando i loro nomi:
colonna (dt, " Max Ic (mA) ") è un costrutto accettabile.
Ri: solo manipolando i dati della colonna una voltaQuindi devo leggere in due colonne che alla fine andrò a usare per a
semplice analisi bivariata: in questo momento non funziona! Grazie ancora per tutto
l'aiuto e la guida!
// definisce le colonne da cercare
colSearch1 = "Area corretta";
colSearch2 = "Max Ic";
// ottieni colonne di interesse
Col1 = dt << * Ottieni nomi di colonna (* "Area corretta" *) *;
Col2 = dt << * Ottieni nomi di colonna (* "Max Ic" *) *;
// cerca le colonne desiderate
colNum1 = Contiene * (* Col1, colSearch1 *) *;
colNum2 = Contiene * (* Col2, colSearch2 *) *;
// column (13) << imposta i valori ((Column (13) << get as matrix) * 100);
// column (13) << nome set ("Max Jc (mA / um ^ 2)");
Colonna1 = Colonna * (* dt, colNum1 *) * << * imposta valori (* * (* Colonna1 << * ottieni come
matrice) * ** 100) *;
Column1 << * set name (* "Max Jc (mA / um ^ 2)" *) *;
Column2 = Column * (* dt, colNum2 *) *;
Chiudere * (* dt, Save * (percorso file)); *
// Chiama CreateBivariate per eseguire un'analisi bivariata (a due variabili) \
status = Lista * (0 *, * 0) *;
Nuova finestra * (* "Analisi personalizzata",
H Casella di riepilogo * (*
V List Box * (*
Panel Box * (* "Controlli",
Casella di testo * (* "Scegli analisi" *) *,
choice = Check Box * ({* "Distribution", "Fit Line" *} *,
current = choice << * Get (1) *;
// xParam = Colonna (9);
// yParam = Column (13);
xParam = Colonna1;
yParam = Column2;
Se * (* e * (* corrente, non * (* stato * [** 1] * *) * *) *,
dt << * Append (*
dt = V List Box * (*
bivDistribution = Distribuzione * (*
Y * (* Eval * (* yParam *) * *) *,
X * (* Eval * (* xParam *) * *) *,
*) *;
*) *
Ri: solo manipolando i dati della colonna una volta @ tylerram93 ,
Questo dovrebbe farlo.
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Define Column To Search For
ColToSearch = "age";
// Get Column Names
ColNames = dt << Get Column Names("String");
// Search if the desired column names exists
ColNum = Contains(ColNames,ColToSearch);
// Get Reference to desired Column
Col = Column(dt,ColNum);
// Alternatively
Col(ColNum) // Also refers to your desired column Ri: solo manipolando i dati della colonna una voltaHa funzionato perfettamente! Grazie!
Domanda di follow-up:
C'è un modo per selezionare le colonne in base al loro nome? Quindi, invece di usare Column (13), può cercare la colonna con "Max Ic (mA)"
Grazie,
Tyler
Ri: solo manipolando i dati della colonna una voltaCiao @ tylerram93:
Un modo semplice per risolvere questo problema: assicurati che il tavolo sia chiuso alla fine dello script. Finché i dati non elaborati sono coerenti, indipendentemente dal numero di volte in cui si esegue lo script e lo si salva e si chiude alla fine come mostrato di seguito, la moltiplicazione dovrebbe avvenire una volta sola.
Non chiudendo il tavolo, stai modificando la tabella ripetutamente, penserei.
Nel caso in cui io abbia frainteso la tua domanda, ti preghiamo di incollare un set di dati di test e uno script di test.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
column(4) << set values( (Column(4) << get as matrix) *100);
column(4) << set name("Max Jc (mA/um^2)");
Close(dt,Save(FilePath));
Migliore
Uday