Intelligente Säulenbehandlung<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Leute,
Wie gehen Sie intelligent mit Spalten um?
Nehmen wir an, ich habe ein Skript und eine Tabelle.
Skript erstellt einige Spalten darin.
Während ich an einem Skript arbeite, führe ich es viele Male an einem Tisch aus. Wenn ein Skript eine Spalte erstellt, werden am Ende viele Spalten mit demselben Namen aber unterschiedlicher Nummer erstellt. Wenn ich später im Skript auf die erstellte Spalte anhand des Namens verweise, würde sie sich auf die alten Spalten beziehen (wie "Neue Spalte", aber nicht "Neue Spalte 23").
Um dies zu umgehen, müssen Sie eine Spalte mit diesem Namen löschen, bevor Sie sie erstellen. Probleme beginnen, wenn das Skript zum ersten Mal für eine neue Tabelle verwendet wird - wenn keine Spalte zum Löschen vorhanden ist ...
Wie würden Sie das Hinzufügen von intelligenten Spalten realisieren?
Einige wie:
Ich möchte eine neue Spalte mit diesem Namen erstellen. Gibt es Spalten mit diesem Namen oder Namen, die diesem Namen und einer Nummer (Dublettenspalten) entsprechen? Wenn ja, dann lösche sie und erstelle meine Spalte. Wenn keine solchen Spalten vorhanden sind, erstellen Sie einfach eine neue Spalte mit diesem Namen ...
Re: Smart SpaltenbehandlungOh, das war einfach:
dt = Öffnen ( "$ sample_data \ Big Class.jmp" ) ;
new_column = "BMI" ;
neue Formel = "7 *: Gewicht /: Höhe /: Höhe" ;
SmartColumn = Funktion ({ new_column . neue Formel } .
// ----- Starten Sie SmartColumn
expr_missing = Eval Insert ( "col = dt << New Column (neue Spalte, Formel (^ neue Formel ^)); ) ;
expr_exists = Eval Insert ( "col = Column (new_column) << Set Formula (^ new_formula ^) << EvalFormula;" ) ;
Ob ( Wird vermisst ( Ist Scriptfähig ( Versuchen ( Säule ( new_column ) ) ) ) .
eval ( analysieren ( expr_missing )) ;
. eval ( analysieren ( expr_exists )) ;
) ;
// - SmartColumn beenden
) ;
SmartColumn ( new_column . neue Formel ) ;
Re: Smart SpaltenbehandlungOk, ich glaube, ich habe es geschafft.
Wenn es als Funktion geschrieben wird, wäre es nur eine clevere Ersetzung der Spalte Hinzufügen.
Es würde den Spaltennamen und die gewünschte Formel erfordern. Wenn eine Spalte mit diesem Namen vorhanden ist, wird die Formel aktualisiert und ausgewertet, wenn sie nicht vorhanden ist - die Formel erstellen und festlegen. Keine Probleme, wenn auf diese Spalte an anderer Stelle in anderen Formeln verwiesen wird.
Kann mir jemand mit syntaxis helfen, es als gebrauchsfertige Formel zu schreiben?
Später würde ich andere Spalteneigenschaften als Funktionsargumente hinzufügen.
dt = Öffnen ( "$ sample_data \ Big Class.jmp" ) ;
new_column = "BMI" ;
neue Formel = "700 *: Gewicht /: Höhe /: Höhe" ;
// ----- Starten Sie SmartColumn
expr_missing = Eval Insert ( "col = dt << New Column (neue Spalte, Formel (^ neue Formel ^)); ) ;
expr_exists = Eval Insert ( "col = Column (new_column) << Set Formula (^ new_formula ^) << EvalFormula;" ) ;
Ob ( Wird vermisst ( Ist Scriptfähig ( Versuchen ( Säule ( new_column ) ) ) ) .
eval ( analysieren ( expr_missing )) ; .
eval ( analysieren ( expr_exists )) ;
) ;
// - SmartColumn beenden
Re: Smart SpaltenbehandlungMein Fehler beim fehlenden "," im Code, den ich Ihnen geschickt habe. Ich entschuldige mich dafür.
Mit dem Code möchte ich Ihnen eine Möglichkeit geben, festzustellen, ob eine bestimmte Spalte vorhanden ist.
Wenn Sie eine Spalte mit einer Formel erstellt haben, die die zu löschende Spalte verwendet, besteht die einfachste Möglichkeit, diese Abhängigkeit zu unterbrechen, indem Sie die Werte in der Spalte, in der die Formel auf die zu löschende Spalte zeigt, in eine tatsächliche Spalte umwandeln Werte statt formelbasierter Werte. Sie müssen dazu lediglich die Formel aus der Spalte entfernen, und JMP konvertiert die Werte in echte Daten. Sobald dies geschehen ist, kann die ursprüngliche Spalte gelöscht werden.
Namensvorgabe für Hier ( 1 );
dt = öffnen ( "$ SAMPLE_DATA \ big class.jmp" );
// Erstellen Sie eine neue Spalte mit einer Formel
dt << Neue Spalte ( "Verhältnis" Formel (: Höhe / Gewicht));
// Entfernen Sie die Formeleigenschaft und die Daten in der Spalte
// wird in reale Werte umgewandelt, nicht in virtuelle Werte
dt: Verhältnis << Eigenschaft löschen ( "Formel" );
Re: Smart SpaltenbehandlungEigentlich nehme ich das zurück. Das Löschen von Spalten ist nicht zulässig, wenn auf die Formeln anderer Spalten verwiesen wird.
Irgendwie anders?
Ist es sogar möglich, Daten entweder neu zu verbinden oder eine Formel für eine Spalte zu ändern, die eine andere Spalte in ihrer Formel hat?
Re: Smart SpaltenbehandlungFunktioniert, wenn Sie "," vor dem zweiten "dt" setzen.
Und Sie verwenden "Throw ()" nicht mit "Try ()"?
Re: Smart SpaltenbehandlungIch verwende Folgendes:
If (Try (Spalte (dt, "") << Name erhalten "")! = "" Dt << Spalten löschen (""));