JMP Scripting – So ändern Sie den Wert einer „Zelle“<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
Ich frage mich, wie ich ein Skript erstellen kann, um den Wert einer „Zelle“ zu ändern, die das Ergebnis einer Berechnung im Skript ist.
Insbesondere möchte ich in der Lage sein, den Wert einer Zelle auf „0“ zu ändern, wenn der berechnete Wert negativ ist, während alle anderen „Zellen“ in Ruhe bleiben.
Auch wenn es in einer neuen Spalte stehen muss, ist das in Ordnung. Wenn ich zum Beispiel meine Spalte mit berechneten Werten habe und der Wert, der mir wichtig ist, negativ ist, erstelle eine neue Spalte, die für diese „Zelle“ nur „0“ sagen würde.
Vielen Dank im Voraus.
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Einzeiler....
dt[dt<< Zeilen abrufen where(:ageval < 14)] = 0;
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Für dieses Szenario könnten Sie die Spalteneigenschaft „Bereichsprüfung“ verwenden. Auf diese Weise enthält die Tabelle die Metadaten und Sie benötigen keine weitere Tabelle:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(2);
Column(dt, "age") << rangeCheck( !LT( 13 ) );
Column(dt, "weight") << rangeCheck( LT( 100 ) );Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Sie müssen die Formel ändern, um nach dem Wert zu suchen, den Sie ändern möchten, und dann eine bedingte Anweisung in der Formel verwenden, um ihn in den gewünschten Wert zu ändern.
// Sample formula
:A + :B;
If( isMissing(:A+:B) == 1, 0 );
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Hallo Jim,
Wie würde dieses Skript aussehen, wenn Sie das „else“ und die dritte Alternative hätten, wie im IF-Befehl definiert?
Am besten,
K
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Ian,
Ich mag die Matrix-Methode, aber wie mache ich das, wenn ich mehrere Spalten reinigen möchte, für die die Reinigungsbedingungen unterschiedlich sind?
zum Beispiel in der großen Klasse
Alter --> alle Zellen mit Wert < 13 als leer einrichten
Höhe -> alle Zellen mit Wert > 100 als leer einrichten
Angenommen, ich habe eine Referenztabelle für alle Spaltenbedingungen.
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Kannst du die Formel posten?Als txnelson sagte, Sie können die Überprüfung einfach zu einem Teil der Formel machen.
Um die Formel zu veröffentlichen:
1. Öffnen Sie Ihren Datensatz und klicken Sie auf das +-Zeichen neben der Formelspalte.
2. Doppelklicken Sie in das Formelfenster.Dadurch wird das Fenster so geändert, dass der JSL-Code für die Formel angezeigt wird
3. Kopieren Sie den JSL-Code und veröffentlichen Sie ihn in diesem Forum.
Die neue Formel wird etwa so aussehen:
tmp = setzen - Original - Formel - Hier ;
Wenn ( tmp < 0 , 0 , tmp ) ;
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Sie können die bedingte Prüfung durchaus zu einem Teil der Formel machen
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Wäre es sinnvoll, den Test in die Formel einzubeziehen?
Wenn ( Passen ( ... ) < 0 ,
0 ,
Passen ( ... )
)
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Danke euch allen.
Ich versuche, den Wert einer Zelle einer Spalte zu ändern, die eine Formel enthält.
Die Spalte „Alter“ der großen Klasse stammt nicht aus einer Formel, daher funktionieren alle diese Vorschläge, um den Wert einer Zelle zu ändern.
Ich habe eine Spalte mit dem Namen „Test“, die die Übereinstimmungsformel verwendet. Gibt es eine Möglichkeit, ein Skript zu erstellen, um den Wert einer Zelle in dieser Spalte auf Null zu ändern, wenn die Vergleichsformel ihn als negativ berechnet? Ich möchte den Wert auf Null zwingen können, wenn er negativ ist.
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Ich werde noch einen Schritt weiter gehen.Viele Male habe ich ähnliche Dinge getan, die Ian gezeigt hat.Entnehmen der Daten aus der Datentabelle und Verwenden von Matrixoperatoren.Dies hat einen Leistungsvorteil bei großen Datenmengen.Das Folgende ist jedoch eine Technik, die ich schon oft verwendet habe, da sie sehr schnell ist und kein Extrahieren aus der Datentabelle erfordert.
Namen standardmäßig hier( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Try( dt:Age[dt << get rows where( :Age < 14 )] = 0 );
Die Funktion „Try“ schützt lediglich vor dem Fall, dass „Get Rows Where“ eine leere Matrix zurückgeben könnte und die Zuweisung einen Fehler auslösen würde.
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Und aufbauend auf Jims Antwort gilt es allgemein als bewährte Vorgehensweise, Schleifen nach Möglichkeit zu vermeiden:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Get the values of age into a vector
ageVals = dt:Age << getValues;
// Find the location of age values less than 14
ageValsLessThan14 = Loc(ageVals < 14);
// Set these values to zero
ageVals[ageValsLessThan14] = 0;
// Put the new values back into the column
dt:Age << setValues(ageVals);
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Rebecca,
Ich frage mich, ob das, was Sie fragen, auf einer grundlegenderen Ebene erklärt werden muss, als Justin es gezeigt hat.Sein Beispiel gibt Ihnen zwar eine Antwort, aber so wie Sie Ihr Problem beschrieben haben, kann ich über Szenarien spekulieren, in denen die Komponenten Ihrer bedingten Anweisung möglicherweise aus anderen Quellen als der aktuellen Datentabelle stammen.
Eine der Grundlagen einer JMP-Datentabelle besteht darin, dass jede Zelle direkt adressierbar ist.Mithilfe der Datentabelle aus Justins Antwort kann auf jede der Zellen zugegriffen werden, indem einfach der Spaltenname und die Zeilennummer angegeben werden.
:Age[1]
zeigt auf den Wert der ersten Zeile für die Spalte „Alter“.Eine korrektere Art, darauf zu verweisen, ist die Verwendung des Datentabellenzeigers (Datentabellen-Namespace).Wenn also der Zeiger auf die Datentabelle, wie in Justins Antwort angegeben, „dt“ ist, dann
dt:Age[1]
ist die richtigere Form.
Wenn wir Justins Beispiel nehmen, könnten wir tatsächlich die vorhandenen Werte ändern und müssten keine neue Spalte erstellen.Der folgende Code erledigt das
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For( I = 1, I <= N Rows( dt ), I++,
if(dt:Age < 14,
dt:Age = 0
);
);
Betreff: JMP Scripting – So ändern Sie den Wert einer „Zelle“Hier ist ein Beispiel dafür, wie eine Zelle beim Kopieren in eine neue Spalte bedingt geändert werden kann:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = dt << New Column( "New Column", Formula( If( :age < 14, 0, :age ) ) );
In Ihrem Fall würden Sie die Bedingung so ändern, dass sie kleiner als Null und nicht 14 ist.