So schreiben Sie einen Befehl auf Formula-Character<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich würde gerne wissen, wie man mithilfe der Formelzeichenfunktion einen praktikablen Befehl schreibt.
Ich habe zum Beispiel eine Spalte mit Zeichendaten, deren Daten von Klasse 1.0 auf Klasse 9.0 abgestuft sind.
Ich möchte diese Informationen in eine andere Spalte umwandeln, die nur 1,0 bis 9,0 anzeigt. Wie kann ich die Formelzeichenfunktion verwenden, um einen Befehl dafür zu schreiben?
Die andere Frage, die ich gerne wüsste, ist, wie ich eine Spalte mit Zeichendaten in eine andere Anweisung in einer neuen Spalte ändern kann.
Ich habe zum Beispiel eine Zeichenspalte mit Daten, die „süß“, „lecker“, „sauer“ usw. anzeigen, und ich würde sie gerne in „süß“ -> „Bin1“, „lecker“ -> „Bin2“, „sauer“ -> „Bin3“ ändern. Wie kann ich das Formelzeichen verwenden, um das Sweet-->Bin1 in eine neue Spalte umzuwandeln?
Danke,
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Hallo Bernie,
Es tut mir leid, dass das bei Ihnen nicht funktioniert! Ich glaube, ich habe einen mehrdeutigen Spaltennamen gewählt, der meiner Meinung nach die Ursache für die Verwirrung sein könnte. Im angehängten Datensatz habe ich eine Spalte mit dem Namen „OriginalColumn“ und das folgende Skript verweist auf diese Spalte in der Word()-Funktion. Die Wortfunktion benötigt keine Argumente dafür, nach welchen Wörtern gesucht wird, sondern nur die Wortnummer und die Spalte, in der gesucht werden soll. Es war mein Fehler, den Spaltennamen „Klasse“ zu verwenden, obwohl Sie diesen entfernen wollten!Lassen Sie mich wissen, ob das folgende Skript für die angehängte Tabelle funktioniert. Wenn dies der Fall ist, sollten Sie es so ändern können, dass es für jede gewünschte Tabelle funktioniert, indem Sie „:OriginalColumn“ so ändern, dass es mit dem Namen der Spalte in Ihrer Tabelle übereinstimmt.
julianisch
//Eine neue Spalte erstellen
Aktuelle Datentabelle () << Neue Spalte ( „ClassNumberOnly“ , Charakter ) ;
//Tabellenaktualisierung stoppen, bis alle Änderungen vorgenommen wurden, gut für große Tabellen
Aktuelle Datentabelle () << Beginnen Sie mit der Datenaktualisierung ;
//Änderungen auf jede Zeile anwenden
Für jede Reihe (
: ClassNumberOnly = Wort ( 2 , :OriginalSpalte )
) ;
// „Datenaktualisierung“ beenden
Aktuelle Datentabelle () << Datenaktualisierung beenden ;
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Hallo Julian,
Eigentlich würde ich es gerne als Zeichen beibehalten, anstatt sie in Zahlen umzuwandeln.
Was ich nur möchte, ist, die „Klasse“ aus der ursprünglichen „Klasse 9.0“ zu entfernen und nur „9.0“ anzuzeigen.
Ich habe das Wort (2, Klasse) verwendet, aber es hat nicht geklappt.
Danke,
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Hallo bernie426
Es hört sich so an, als ob Sie möchten, dass die resultierende Spalte numerisch ist, stimmt das? Wenn ja, ist Peters Vorschlag oben der richtige Weg, damit umzugehen. Wenn Sie einen Teil eines Strings extrahieren, bleibt dieser ein String, es sei denn, Sie teilen JMP mit, dass Sie den String in eine Zahl umwandeln möchten. Hier ist ein fertiges Skript mit der Num()-Funktion, die um die Word()-Funktion gewickelt ist, und außerdem einer weiteren Änderung, um die neue Spalte beim Erstellen numerisch zu machen.
Ich hoffe, das funktioniert für Sie!
julianisch
//Eine neue NUMERIC-Spalte erstellen
Aktuelle Datentabelle () << Neue Spalte ( „ClassNumberOnly“ , Numerisch ) ;
//Tabellenaktualisierung stoppen, bis alle Änderungen vorgenommen wurden, gut für große Tabellen
Aktuelle Datentabelle () << Beginnen Sie mit der Datenaktualisierung ;
//Änderungen auf jede Zeile anwenden
//Die folgende Funktion sucht nach einer Spalte mit dem Namen „Klasse“
//wenn sich die Daten in einer Spalte mit einem anderen Namen befinden
//ändere :Klasse so, dass sie der Spaltenname ist, aber
//Achten Sie darauf, das : beizubehalten, da JMP dadurch weiß, dass Sie es sind
//verweisen auf eine Spalte.
//Diese Funktion umschließt auch die Word()-Funktion in Num()
//was die Zeichenausgabe in eine Zahl umwandelt
//damit die resultierende Spalte numerisch bleibt
Für jede Reihe (
: ClassNumberOnly = Num ( Wort ( 2 , : Klasse ) )
) ;
// „Datenaktualisierung“ beenden
Aktuelle Datentabelle () << Datenaktualisierung beenden ;
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Versuchen Sie, die NUM-Funktion zu verwenden, um die Zeichenfolgennummer in eine tatsächliche Zahl umzuwandeln.
A = „Klasse 9“ ;
B = Num ( Wort ( 2 , A )) ;
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Hallo Julian,
Ich habe das „Match“-Skript oder die „Match“-Formel perfekt zum Laufen gebracht und es gefällt mir so gut.
Allerdings kann ich die Funktion „Word“ weder in der Formel noch im Skript zum Laufen bringen.
Der Fall, den ich habe, ist eine vorhandene Spalte, die Zeichen der „Klasse 1“ bis Klasse 9 enthält, und ich möchte daneben eine neue Spalte haben, die nur die Zahl (1 bis 9) anzeigt und immer noch im Zeichen-/Attributformat vorliegt.
Basierend auf dem Word()-Skript, das Sie als Beispiel für mich geschrieben haben: Benötigen wir Eingabeinformationen für die Mutterspalte (Klasse 1…Klasse 9) und verwenden wir die Word()-Funktion?
Danke,
Bernie
Verwenden Sie Words(), um nur die Zahlen herauszuziehen
//Eine neue Spalte erstellen
Current Data Table() << New Column("ClassNumberOnly", Character);
//Tabellenaktualisierung stoppen, bis alle Änderungen vorgenommen wurden, gut für große Tabellen
Aktuelle Datentabelle() << Datenaktualisierung beginnen;
//Änderungen auf jede Zeile anwenden
Für jede Reihe(
:ClassNumberOnly = Word( 2, :Class )
);
// „Datenaktualisierung“ beenden
Aktuelle Datentabelle() << Datenaktualisierung beenden;
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Hallo Bernie,
Ich bin froh, dass ich gefragt habe! Es gibt verschiedene Möglichkeiten, dies zu erreichen, je nachdem, ob Sie eine Formelspalte oder die tatsächlichen Werte schreiben möchten. Unterschiedliche Umstände erfordern das eine oder das andere, daher habe ich unten Methoden für beide aufgeführt.
So schreiben Sie die tatsächlichen Werte:
| Verwenden Sie Word(), um nur die Zahlen zu extrahieren |
|---|
//Eine neue Spalte erstellen Aktuelle Datentabelle () << Neue Spalte ( „ClassNumberOnly“ , Charakter ) ; //Tabellenaktualisierung stoppen, bis alle Änderungen vorgenommen wurden, gut für große Tabellen Aktuelle Datentabelle () << Beginnen Sie mit der Datenaktualisierung ; //Änderungen auf jede Zeile anwenden Für jede Reihe ( : ClassNumberOnly = Wort ( 2 , : Klasse ) ) ; // „Datenaktualisierung“ beenden Aktuelle Datentabelle () << Datenaktualisierung beenden ; |
| Verwenden von Match() zum Umkodieren |
|---|
//Eine neue Spalte erstellen Aktuelle Datentabelle () << Neue Spalte ( „AttributeRecode“ , Charakter ) ; //Tabellenaktualisierung stoppen, bis alle Änderungen vorgenommen wurden, gut für große Tabellen Aktuelle Datentabelle () << Beginnen Sie mit der Datenaktualisierung ; //Änderungen auf jede Zeile anwenden Für jede Reihe ( : AttributeRecode = Passen ( : Attribut , "Lecker" , „Bin3“ , "Süss" , „Bin2“ , "Sauer" , „Bin1“ , : Attribut ) ) ; // „Datenaktualisierung“ beenden Aktuelle Datentabelle () << Datenaktualisierung beenden ; |
So schreiben Sie eine Formelspalte:
| Verwenden Sie Word(), um nur die Zahlen zu extrahieren |
|---|
//Formelspalte erstellen Aktuelle Datentabelle () << Neue Spalte ( „ClassNumberOnly“ , Charakter , Formel ( Wort ( 2 , : Klasse ) ) ) ;
|
| Verwenden von Match() zum Umkodieren |
|---|
//Formelspalte erstellen Aktuelle Datentabelle () << Neue Spalte ( „AttributeRecode“ , Charakter , Formel ( Passen ( : Attribut , "Lecker" , „Bin3“ , "Süss" , „Bin2“ , "Sauer" , „Bin1“ , : Attribut ) ) ) ;
|
Hoffe das hilft!
julianisch
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Hallo Julian,
Vielen Dank, dass Sie meinen ersten Beitrag noch einmal gelesen haben. Ja, es wäre sogar noch besser, wenn es eine Skriptoption gäbe, da ich diese täglich verwende.
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Gern geschehen! Ich habe gerade Ihren ersten Beitrag noch einmal gelesen und mir ist aufgefallen, dass Sie möglicherweise eher nach einer Skriptlösung als nach einer Spaltenformellösung gesucht haben. Wenn das der Fall ist, lassen Sie es mich wissen und ich kann Ihnen bei der Einrichtung mithilfe eines Skripts helfen. Sie haben vielleicht bemerkt, dass es unter „Col“ > „Neu kodieren“ sogar eine Option gibt, mit der JMP die Neukodierung als Skript schreiben kann. Ich würde also dort beginnen und wir könnten den Code anpassen, um Word() zur Beantwortung Ihrer ersten Frage zu verwenden.
julianisch
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Vielen Dank für die nützlichen Informationen, Julinan.
Bernie
Betreff: Wie schreibe ich einen Befehl auf Formula-Character?Hallo bernie426 ,
Um einen Teil Ihrer Spalte zu extrahieren, können Sie die Funktion Word() verwenden, die zwei Argumente benötigt: Das erste ist das zu extrahierende „Wort“ (hier geben Sie eine Zahl ein) und das zweite ist die Spalte mit dem Text, aus dem Sie extrahieren möchten. Es gibt ein drittes, optionales Argument, in dem Sie die Trennzeichen angeben können, die Wörter trennen. In Ihrem Fall funktioniert jedoch die Standardeinstellung „Leerzeichen“. Um dies zu nutzen, erstellen Sie eine neue Formelspalte mit Word(2,:Class) (wobei :Class die Variable ist, in der Ihre Originaldaten gespeichert sind).Zum Beispiel (auch im beigefügten Datensatz):

Dabei wird das zweite „Wort“ verwendet, das einfach das ist, was nach dem ersten angetroffenen Leerzeichen steht, also nur die Zahlen.
Für Ihre zweite Frage würde ich die Match-Funktion (unten) verwenden. Sie können dies selbst schreiben oder das Dienstprogramm zur Spaltenneucodierung verwenden, um es für Sie zu schreiben. Um Letzteres zu tun, wählen Sie die Originalspalte aus und gehen Sie dann zu Spalten > Neu kodieren. Geben Sie an, welche neuen Werte Ihre Variable haben soll, und wählen Sie dann „Formelspalte“ anstelle von „In Place“ aus.JMP erstellt mithilfe der Match-Funktion eine neue Spalte.

Sie könnten Cols > Recode auf die gleiche Weise für Ihre erste Frage verwenden, aber wenn Sie viele Ebenen haben, ist die Verwendung von Word() schneller als die manuelle Angabe der Neukodierung.
Ich habe einen Beispieldatensatz mit diesen Formeln angehängt.
Ich hoffe das hilft!
julianisch