Wie kann ich Spaltennamen in einer for-Anweisung durchlaufen?Hallo, ich versuche eine neue Formelspalte zu erstellen, die die vorherigen Spalten durchläuft. Die vorherigen Spalten sind in zwei Gruppen unterteilt. Jede Gruppe hat Spaltennamen, die mit einer von zwei Zeichenfolgen beginnen.Dann enden diese Spaltenüberschriften mit ganzen Zahlen, 0, 1, 2, ... bis 22. Bitte sehen Sie sich den beigefügten PDF-Screenshot meines Codes an und teilen Sie mir mit, warum es nicht funktioniert.Da ich JMP vor gestern noch nicht verwendet habe, vermute ich, dass ich in den Spaltennamen innerhalb der IF-Anweisung möglicherweise falsch „i“ oder „%i“ verwende.
Dank im Voraus!
Betreff: Wie kann ich Spaltennamen in einer for-Anweisung durchlaufen?Liz_s, ja, das bezieht sich auf Spaltennummern.
Wählen Sie im JMP-Hauptmenü „Hilfe“ > „Bücher“ > „Skripthandbuch“ und gehen Sie zu Seite 439 (oder in der Nähe). Dies ist ein Abschnitt in Kapitel 9 Datentabellen , Abschnitt 1, Arbeiten mit Datentabellenobjekten , Thema Zugriff auf Datenwerte . Lesen Sie den gesamten Abschnitt, um alternative Methoden für den Zugriff auf und die Zuweisung von Datenwerten zu finden.
Kommentar: Der Schlüssel zu Ihrer Aufgabe bestand darin, herauszufinden, welche Entscheidungsspalte für jede Zeile „Immatrikuliert“ enthielt. Mehr als 22 Schleifen pro Zeile bedeuten eine Menge Verschachtelung. Der Schlüssel hier, um mehr zu erfahren, ist die Verwendung von Hilfe > Skriptindex > Funktionen, um mehr über „Contains“ zu erfahren.
Enthält( Liste|Zeichenfolge, passende Zeichenfolge) gibt die erste Position zurück, an der es gefunden wird. Hinweis: Loc() gibt alle Positionen in einer Liste oder Matrix zurück, an denen der passende Wert gefunden wird. Wenn Sie verstehen, dass dt[row, c1::cn], wobei die Spalten c1 bis cn Zeichen sind, eine Liste der Tabellenwerte zurückgibt.Contains() findet die Position (k), sodass dies die richtige Position für die Organisationsspalte ist.
Der Schlüssel liegt darin, „Ihre Werkzeuge zu kennen“, wie Sie auf Ihre Funktionen zugreifen und sie zuweisen und kennen.
Viel Glück beim Erlernen von JMP.
Betreff: Wie kann ich Spaltennamen in einer for-Anweisung durchlaufen?Hallo,
Dieses Skript hat perfekt funktioniert und vielen Dank, dass Sie mir geholfen haben, meine Unkenntnis mit dem JMP-Formeleditor zu umgehen.Dieser elegante Code war eher das, was ich im Sinn hatte, als ich anfing, meine Schleife zu schreiben.Noch eine letzte Frage: Könnten Sie bitte Ihre Auswahl der Zahlen 6 und 10 in der Index-Erklärung erläutern?
Ich vermute, dass die Indexnummern 6 und 10 darauf zurückzuführen sind, dass Ihre Testdatei jeweils 5 Spaltentypen und insgesamt 10 Spalten enthielt.Also beginnt mit 6 die Menge der Entscheidungsspalten und mit 10 endet die Menge der Entscheidungsspalten?(Ich habe beschlossen, Vermutungen zu vermeiden und einfach Sie zu fragen.)
Ich fühle mich dankbar!
Liz_S
Betreff: Wie kann ich Spaltennamen in einer for-Anweisung durchlaufen?Hier ist die Formel, die für die Immatrikulationsdatentabelle funktioniert. Dies ist nur JSL-Text.
k = Contains( Current Data Table()[Row(), Index( 6, 10 )], "Matriculated" );
If( k > 0,
Column( "designation_organization_" || Char( k ) )[Row()],
"None"
);
Betreff: Wie kann ich Spaltennamen in einer for-Anweisung durchlaufen?Als Erstes habe ich versucht, die Blue-Box-Formel zu kopieren und in ein neues Spaltenskriptfenster einzufügen. Es fügt sich nicht ein; Es ist, als ob die Informationen im blauen Feld Ihrer Lösung ein Bild oder ein Screenshot wären.
Ja, ich weiß, wie man in ein Formelfeld doppelklickt, um ein Skript einzugeben. Ich verstehe immer noch nicht, wie man Zeilen- und Spaltenindizes zu einer Contain-Anweisung hinzufügt. Aber nochmals vielen Dank für die früheren Teile Ihrer Antwort.Betreff: Wie kann ich Spaltennamen in einer for-Anweisung durchlaufen?Manchmal ist es mühsam, eine Formel mit mehreren Aussagen einzugeben, und es ist besser, sie einzutippen.
Wenn Sie in die Formel doppelklicken, öffnet sich ein Skriptfenster.Dies erfordert möglicherweise ein wenig Übung. Kopieren Sie möglicherweise die Formel, die die Spaltennummern verwendet, und fügen Sie sie in das blaue Feld ein. Doppelklicken Sie dann, um den Skripteditor aufzurufen.
Ich hoffe das hilft.
Betreff: Wie kann ich Spaltennamen in einer for-Anweisung durchlaufen?Hallo gzmorgan0,
Das erste Skript, das Sie für die beigefügte Tabelle geschrieben haben, erfüllt meine Wünsche und ist brillant!Ich werde mein Projekt heute bei der Arbeit fertigstellen können.Danke!Da dies für mich jedoch Tag 3 in JMP ist, würde ich gerne verstehen, wie die letzte Option, die Sie geschrieben haben, mit dem Formeleditor in JMP geschrieben wird.Als ich versuchte, die neue Spalte in Ihrer Tabelle zu erstellen, nachdem ich das erste Skript ausgeführt hatte, stieß ich auf zwei Probleme:
1.) Ich konnte im Spaltenformeleditor nicht zwei unabhängige Funktionen in zwei separaten Anweisungen verwenden. Ich begann mit dem Enthält Funktion und fügte ein „;“ hinzu Danach.Aber als ich dann auf das klickte Wenn Bei der Funktion „Contains“ wurde die „Contains“-Anweisung automatisch eingebettet.Seltsam.Ich will nicht Enthält Eingebettet in Wenn oder umgekehrt.
2.) Ich habe nicht gesehen, wie man row() und Index(6,10) zum hinzufügt Enthält ( Aktuelle Datentabelle (),...Die ^-Option gab mir einen neuen durch Kommas getrennten „Teil“: Enthält( Aktuelle Datentabelle() , Teil , „immatrikuliert“).Wie haben Sie die Zeilen-/Spaltenoptionen in Ihr eingefügt? Enthält Funktion im Formeleditor?
Ich habe die Tutorials des Willkommenskits durchgesehen, aber in einer neuen Spalte nicht genügend Informationen zur Skripterstellung und zur Verwendung des Formeleditors gesehen.Kennst du zufällig ein Youtube-Video, das du Anfängern empfehlen könntest?Ich würde mich aber auch über eine weitere Antwort von Ihnen freuen, wenn Sie Zeit haben.
Vielen Dank!
Betreff: Wie kann ich Spaltennamen in einer for-Anweisung durchlaufen?Es gibt mehrere Methoden, um das zu erreichen, was Sie meiner Meinung nach brauchen. Zunächst müssen Sie die JMP-Syntax für die Referenzierung von Spalten verstehen.Wenn Sie beispielsweise eine neue Spalte erstellen möchten, in der zufällig die Organisation 1–5 ausgewählt wird, finden Sie hier die Spaltenformel
i = Random Integer(1,5);
Column( "designation_organization_" || Char( i ) )[Row()];
|| ist der Verkettungsoperator, Char(i) ist die Zeichenfolge. Dann stellen Klammern die Zeile aus der angegebenen Spalte dar.
Ich habe eine Tabelle angehängt. Ich habe keine Ahnung, wie Ihre Tabelle aussieht, aber vielleicht hilft dieses Skript.
Öffnen Sie die beigefügte Tabelle.Führen Sie dann dieses Skript aus
dt=data table("matriculation");
cnmes = dt << get column names("string");
dcols = {}; //create a list of decision columns
for(i=1, i<=nitems(cnmes), i++,
if( contains(cnmes[i], "_decision_"), Insert into(dcols, cnmes[i]) )
);
//create a new column
matcol = dt << New Column("Major", Character);
//rowwise
for(i=1, i <= nrow(dt) , i++,
k = Contains(dt[i,dcols], "Matriculated"); <BR /> //dt[ i, dcols] is a list of values in the decision columns from row i<BR /> //contains returns the position in the list for "Matriculated"
matcol[i] = if(k>0, Column("designation_organization_" || char(k))[i], "None" );<BR /> //if k > 0, "Matriculated" was found, so assign to matcol the organization for the corresponding k
);Beachten Sie, dass JMP die Verwendung von Spaltennummern zulässt. Hier ist ein Skript für eine neue Spalte für die angehängte Tabelle, das Spaltennummern verwendet

Betreff: Wie kann ich Spaltennamen in einer for-Anweisung durchlaufen?Ihr PDF ist schwer zu lesen.Wird nur eine der 22 Kolumnen „immatrikuliert“ sein? Oder mehrere und Sie möchten alle Organisationscodes?