Spaltendaten nur einmal bearbeitenHallo!
Ich habe ein Problem, bei dem ich eine Spalte mit Daten (eine Reihe von Max-Strömen) mit 100 multipliziere, um Max Current Densities zu erhalten.
Säule ( 13 ) << Werte setzen ( ( Säule ( 13 ) << als Matrix erhalten ) * 100 ) ;
Säule ( 13 ) << Name einsetzen ( Max Jc (mA / um ^ 2) ) ;
Wenn ich das Skript jedoch mehrmals ausführe, multipliziert es die Daten ständig mit Hundert, und ich muss die Datentabelle schließen und erneut öffnen.
Gibt es eine Möglichkeit, es nur einmal zu aktualisieren?
Vielen Dank,
Tyler
Betreff: Man kann die Spaltendaten nur einmal bearbeitenBeyogen auf @pmroz Wenn Sie die Eingabe eingeben, möchten Sie Ihren Code folgendermaßen ändern:
//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); Jetzt haben Sie bei Bedarf Referenz für colNum1 und colNum2. Alternativ wie @pmroz erklärt:
Col1 = column(dt,"Corrected Area") ;
Col2 = column(dt,"Max Ic") ;
Betreff: Man kann die Spaltendaten nur einmal bearbeitenSie müssen nur einmal die Spaltennamen erhalten. Dadurch werden die Spaltennamen in eine Liste geladen.
Sie können sich aber auch direkt auf Spalten beziehen, indem Sie deren Namen verwenden:
Spalte (dt, " Max Ic (mA) ") ist ein akzeptables Konstrukt.
Betreff: Man kann die Spaltendaten nur einmal bearbeitenIch muss also in zwei Spalten lesen, die ich schließlich für eine verwenden werde
einfache bivariate Analyse: Im Moment funktioniert es nicht! Nochmals vielen Dank für alles
die Hilfe und Anleitung!
// Spalten definieren, nach denen gesucht werden soll
colSearch1 = "korrigierter Bereich";
colSearch2 = "Max Ic";
// bekomme interessante Spalten
Col1 = dt << * Spaltennamen abrufen (* "korrigierter Bereich" *) *;
Col2 = dt << * Spaltennamen abrufen (* "Max Ic" *) *;
// Suche nach gewünschten Spalten
colNum1 = Enthält * (* Col1, ColSearch1 *) *;
colNum2 = Enthält * (* Col2, ColSearch2 *) *;
// Spalte (13) << Werte setzen ((Spalte (13) << als Matrix erhalten) * 100);
// Spalte (13) << Name setzen ("Max Jc (mA / um ^ 2)");
Spalte1 = Spalte * (* dt, colNum1 *) * << * Werte setzen (* * (* Spalte1 << *)
Matrix) * ** 100) *;
Spalte1 << * Setname (* "Max Jc (mA / um ^ 2)" *) *;
Spalte2 = Spalte * (* dt, colNum2 *) *;
Schließen * (* dt, Save * (Dateipfad)); *
// CreateBivariate aufrufen, um eine bivariate (zwei Variablen) Analyse durchzuführen \
Status = Liste * (0 *, * 0) *;
Neues Fenster * (* "Benutzerdefinierte Analyse",
H-Listenfeld * (*
V-Listenfeld * (*
Panel Box * (* "Steuerelemente")
Textfeld * (* "Analyse wählen" *) *,
Auswahl = Kontrollkästchen * ({* "Distribution", "Fit Line" *} *,
aktuell = Wahl << * Get (1) *;
// xParam = Spalte (9);
// yParam = Spalte (13);
xParam = Spalte1;
yParam = Spalte2;
Wenn * (* und * (* aktuell, nicht * (* status * [** 1] * *) * *) *,
dt << * Anhängen (*
dt = V List Box * (*
bivDistribution = Verteilung * (*
Y * (* Eval * (* yParam *) * *) *,
X * (* Eval * (* xParam *) * *) *,
*) *;
*) *
Betreff: Man kann die Spaltendaten nur einmal bearbeiten @ tylerram93 .
Das sollte es tun.
// 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 Betreff: Man kann die Spaltendaten nur einmal bearbeitenDas hat perfekt funktioniert! Vielen Dank!
Zusatzfrage:
Gibt es eine Möglichkeit, Spalten anhand ihres Namens auszuwählen? Anstelle der Spalte (13) kann die Spalte mit "Max Ic (mA)" gesucht werden.
Vielen Dank,
Tyler
Betreff: Man kann die Spaltendaten nur einmal bearbeitenHallo @ tylerram93:
Dies lässt sich auf einfache Weise beheben: Stellen Sie sicher, dass die Tabelle am Ende des Skripts geschlossen ist. Solange Ihre Rohdaten konsistent sind, unabhängig davon, wie oft Sie das Skript ausführen und wie unten gezeigt am Ende speichern und schließen, sollte die Multiplikation nur einmal erfolgen.
Wenn Sie die Tabelle nicht schließen, ändern Sie die Tabelle wiederholt, würde ich denken.
Falls Sie Ihre Frage falsch verstanden haben, fügen Sie bitte einen Testdatensatz und ein Testskript ein.
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));
Beste
uday