Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Hi,
Neue Herausforderung:
Ich habe die Spalteneigenschaft erstellt: Testnummer in der 1st_file. Jeder Test hat eine eindeutige Testnummer, die in der Spalteneigenschaft zu finden ist, wie Sie unten im hervorgehobenen roten Kreis sehen können:

Ich habe eine 2. JMP-Datei mit 1 Spalte (Test):

Ich versuche, ein Skript zu schreiben, das die Testnummer aus der ersten Datei kopieren und den niedrigsten Wert unter den Tests in der zweiten Datei zuweisen kann, sodass meine Ausgabe relativ so aussieht:
Die Testnummer wird in der Spalteneigenschaft der 1. Datei definiert
Z.B Brennen, Kühlen, ESD = Min[Testnummer] = 21
Ausgabe:

Irgendwelche Vorschläge?
Vielen Dank
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Guter Versuch mit dem If ..... aber die Verzweigung muss größer sein.Siehe unten......
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column( "Test Number" );
For( i = 1, i <= N Rows( dt2 ), i++,
k = 1;
While( Word( k, dt2:test[i], "," ) != "",
theWord = Word( k, dt2:test[i], "," );
If( theWord != "N/A",
If( k == 1,
theTest = Column( dt1, theWord ) << get property( "Test Number" ),
theCompare = Column( dt1, theWord ) << get property( "Test Number" );
If( theCompare < theTest,
theTest = theCompare
);
)
,
theTest = 0
);
k++;
);
dt2:test number[i] = theTest;
);Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Hi @txnelson ,
Eine letzte Frage
Ich habe welche N / A Testen Sie in den Zeilen, die etwa so aussehen. Ich wollte zuordnen Testnummer wie 0 zu N / A Reihen

Ich habe ein hinzugefügt wenn() Erklärung, aber ich bin mir nicht sicher, ob ich die Erklärung richtig eingegeben habe. Könnten Sie es sich bitte ansehen?
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
dt2 << New Column("Test Number");
For( i = 1, i <= N Rows( dt2 ), i++,
k = 1;
While( Word( k, dt2:test[i], "," ) != "",
theWord = Word( k, dt2:test[i], "," );
If( k == 1,
theTest = Column( dt1, theWord ) << get property( "Test Number" ),
theCompare = Column( dt1, theWord ) << get property( "Test Number" );
If( theCompare < theTest,
theTest = theCompare
);
);
k++;
<STRONG>If( Word( 1, dt2:test[i], "," ) == N/A,
dt2:test number[i] = 0;
);</STRONG><BR /> );
dt2:test number[i] = theTest;
);
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
For( i = 1, i <= N Rows( dt2 ), i++,
k = 1;
While( Word( k, dt2:test[i], "," ) != "",
theWord = Word( k, dt2:test[i], "," );
If( k == 1,
theTest = Column( dt1, theWord ) << get property( "Test Number" ),
theCompare = Column( dt1, theWord ) << get property( "Test Number" );
If( theCompare < theTest,
theTest = theCompare
);
);
k++;
);
dt2:test number[i] = theTest;
);Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Hi @txnelson ,
Kannst du wenn möglich bitte den Code posten? Ich habe Fristen, um diese Aufgabe zu erledigen. Ich habe versucht, die Funktion while() für Zeilen zu verwenden, die weniger als 3 Test haben, aber sie wird nicht ausgeführt. Die Diskussion wird lang und verwirrend.
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Hi @txnelson ,
Ich habe einen Vorschlag. Kann ich eine Liste erstellen und die Testnummer in der Liste speichern und die Syntax verwenden Mindest() um die niedrigste Nummer zu vergeben?
For (i=1, i<=2, i++,
theWord = word(i,dt2:test[1],",");
theTest() = column( dt1, theWord ) << get property("Test Number");
dt2:test number[1] = Min(theTest);
);
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Dieser ist auf mich.....Ich habe einen Test mit der falschen Variable durchgeführt.Die Anweisungen, die den Vergleich durchführen, sollten lauten
If( theCompare < theTest,
theTest = theCompare
);
Aber Sie haben ein anderes Problem ... das Skript geht davon aus, dass Sie immer 3 Werte in jeder der Zeilen für die Spalte Test haben.Wenn es weniger als 3 gibt, schlägt das Skript fehl, oder wenn es mehr als 3 gibt, wird es nie mit den 4,5 usw. Elementen verglichen.
Schauen Sie sich die While()-Funktion an, um zu erfahren, wie Sie dieses Problem lösen können.
Unten ist der für die Vergleichsanweisungen korrigierte Code
Names Default To Here( 1 );
dt1 = Data Table( "1st_file" );
dt2 = Data Table( "2nd file" );
For( i = 1, i <= N Rows( dt2 ), i++,
theWord = Word( 1, dt2:test[i], "," );
theTest = Column( dt1, theWord ) << get property( "Test Number" );
theWord = Word( 2, dt2:test[i], "," );
theCompare = Column( dt1, theWord ) << get property( "Test Number" );
If( theCompare < theTest,
theTest = theCompare
);
theWord = Word( 3, dt2:test[i], "," );
theCompare = Column( dt1, theWord ) << get property( "Test Number" );
If( theCompare < theTest,
theTest = theCompare
);
dt2:test number[i] = theTest;
);
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Hi @txnelson ,
Die von Ihnen vorgeschlagene Logik funktioniert unter bestimmten Bedingungen nicht. Wenn ich die Reihenfolge des Tests ändere, generiert das Skript falsche Werte und die Testnummer für die Zeilen 4,5,6 ist leer
Test = Kühlung, ESD, Strom
Testnummer = Minimum von Testnummer[32, 87, 23] = 23
Die Testnummer sollte 23 in der 2. Spalte sein.

Ich habe die von Ihnen vorgeschlagene Aussage korrigiert:
For (i=1, i<=nrows(dt2), i++,
theWord = word(1,dt2:test[i],",");
theTest = column( dt1, theWord ) << get property("Test Number");
theWord = word(2,dt2:test[i],",");
theCompare = column( dt1, theWord ) << get property("Test Number");
If( theCompare < theWord, theTest = theCompare );
theWord = word(3,dt2:test[i],",");
theCompare = column( dt1, theWord ) << get property("Test Number");
If( theCompare < theWord, theTest = theCompare );
dt2:test number[i] = theTest;
);
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Das Problem liegt bei dieser Aussage
theWord = word(i,dt2:test[i],",");
Ihre For()-Schleife verwendet "i" als Index und variiert von 1 bis N Rows(dt2).Daher variiert er von 1 bis 5. Sie verwenden den "i"-Index an zwei verschiedenen Stellen innerhalb der Word()-Funktion.dt2:Test[i] liest die erste bis fünfte Zeile.Aber wenn Sie sich die JSL-Syntaxreferenz ansehen für die Funktion Word()
Word(n|[first last], string, <delimiter>, <Unmatched(result string)>)
Description
Returns the nth item of the string, where words are sub-strings separated by any number of
any characters in the delimiter argument.
Arguments
n The position of the word being extracted.
[first last] A matrix that defines the beginning and end word range to return.
string The string that is evaluated.
delimiter (Optional) The character used as a boundary. If delimiter is absent, an ASCII
space is used. If delimiter is the empty string, each character is treated as a separate
word. If delimiter is an empty string, each character is treated as a spate word.
Unmatched(result string) The string to print if no match is found.
Examples
This example returns the last name:
Word( 2, "Katie Layman" );
Note
See “Item(n|[first last], string, <delimiter>, <Unmatched(result string)>, <Include
Boundary Delimiters(Boolean)>)” on page 35 for examples of how Word() differs from
Item().
Was Sie für das Wort angeben, das Sie entfernen möchten, hängt vom Wert von "i" ab.Das ist nicht das, was Sie wollen.In dem von mir bereitgestellten Code war es entweder eine 1, 2 oder 3
Das musst du also anpassen
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Hi @txnelson ,
Ich habe die For-Schleife in dem von Ihnen geposteten Skript verwendet.
names default to here(1);
dt1 = data table("1st_file");
dt2 = data table("2nd file");
dt2 << New Column("Test Number");
For(i=1, i<=nrows(dt2),i++,
theWord = word(i,dt2:test[i],",");
theTest = column( dt1, theWord ) << get property("Test Number");
theWord = word(i,dt2:test[i],",");
theCompare = column( dt1, theWord ) << get property("Test Number");
If( theCompare < theWord, theTest = theCompare );
theWord = word(i,dt2:test[i],",");
theCompare = column( dt1, theWord ) << get property("Test Number");
If( theCompare < theWord, theTest = theCompare );
dt2:test number[i] = theTest;
);
<BR />Es werden keine Werte für die Zeilen 4 und 5 der 2. Datei zugewiesen

Ich bin mir ziemlich sicher, dass ich einen Fehler in der For-Schleife gemacht habe. Können Sie mir bitte eine Anleitung geben.
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?@txnelson Du bist ein Genie. Ja, Sie haben Recht, ich werde anfangen zu lernen. Danke vielmalsBetreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?@Jacksmith12 All diese Anweisungen und Funktionen wurden Ihnen in den vorherigen Beispielen gezeigt.Sie müssen anfangen, um versuchen zu können, sie selbst zusammenzusetzen.Beim Rechnen lernt man nur, indem man Fehler macht und herausfindet, wo das Problem liegt.Unten ist also ein Fluss für einen einzelnen Eintrag aus Ihrer 2nd_file, der die minimale Testanzahl zurückgibt.Sie sollten in der Lage sein, den Rest des Codes zusammenzusetzen.
names default to here(1);
dt1 = data table("1st_file ");
dt2 = data table("2nd file ");
dt2 << New Column("Test Number");
theWord = word(1,dt2:test[1],",");
theTest = column( dt1, theWord ) << get property("Test Number");
theWord = word(2,dt2:test[1],",");
theCompare = column( dt1, theWord ) << get property("Test Number");
If( theCompare < theWord, theTest = theCompare );
theWord = word(3,dt2:test[1],",");
theCompare = column( dt1, theWord ) << get property("Test Number");
If( theCompare < theWord, theTest = theCompare );
dt2:test number[1] = theTest;
Stellen Sie sicher, dass Sie jede Zeile des Codes verstehen, und wenn Sie dies nicht tun, stellen Sie gezielt Fragen zu dem, was Sie nicht verstehen.
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Können Sie ein Beispiel für einen schnellen Start geben?Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?In 1st_file haben die Spalten jeweils nur 1 Spalteneigenschaft, Testnummer.....kein Testname.
Angenommen, eine zweite Spalteneigenschaft für jede Spalte des Testnamens hätte sich in der Datentabelle 1st_File befinden sollen, dann glaube ich, dass der beste Weg, auf sie zuzugreifen, darin besteht, ein assoziatives Array zu erstellen. Durchlaufen Sie dann jede der Spalten, extrahieren Sie die 2 Spalteneigenschaften und platzieren Sie sie im assoziativen Array. Schließlich würde man die 2nd_file Zeile für Zeile durchlaufen und den Wert der Spalte Test nehmen, es wäre eine einfache Suche gegen das assoziative Array, um die erforderliche Testnummer zu erhalten.Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Hi @txnelson ,
Klicken Sie mit der rechten Maustaste auf die Spalteneigenschaften und Sie finden die Testnummer und den Testnamen
Betreff: Wie kann ich die Spalteneigenschaft in die JMP-Datendatei importieren?Woher weiß man, welche der Spalten in 1st_file bei der Berechnung des Werts einer bestimmten Zeile in 2nd_file ausgewertet werden?