Extrahieren von Daten aus Diagramm/Datentabelle<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe eine Datentabelle, die das Folgende darstellt.Ich muss die entsprechenden x-Werte für die Punkte finden, die y=0 am nächsten liegen.Ich brauche die ersten beiden Punkte (rote Linien), die den (nächsten) Nullpunkt kreuzen, der dritte Schnittpunkt ist nicht von Interesse.
Ich kann den nächstgelegenen Wert mithilfe des Skripts finden:
Wert = 0;
d = Abs((:"col" << Werte abrufen) - Wert);
rows = Loc(d == Min(d));
Show(rows);
Datentabelle( "DT" ) << select rows(rows);
Dies gibt den Wert zurück, der der Nulllinie am nächsten liegt, unabhängig davon, wann diese die Nulllinie kreuzt.

Diese beiden x-Werte werden als neue Spalte in das dt übernommen und für weitere Berechnungen verwendet.Bin ich mit dem obigen Skript auf dem richtigen Weg?
Übrigens bin ich neu in der JMP-Skripterstellung (und in der Programmierung im Allgemeinen).
Danke!
Betreff: Extrahieren von Daten aus Diagramm/DatentabelleWenn Sie die Daten aus der Übersichtstabelle, die Sie angeblich berechnet haben, übernehmen und einen Tables==>Join dieser Daten mit Ihrer ursprünglichen Datentabelle durchführen, können Sie in Ihrem Skript darauf verweisen.Oder wenn Sie die Daten manuell hinzufügen, funktioniert das.Wenn also die Spalte mit dem Namen „Halbwert“ für jede Zeile einen Wert für „Halbwert“ enthält, können Sie die „0“ durch „0“ ändern
Halber Wert und halber Wert[I+1]
If( (dt:y >= dt:Halber Wert & dt:y[I+1]<=dt:Halbwert[I+1]......................
Betreff: Extrahieren von Daten aus Diagramm/DatentabelleDa ich den halben Wert des Maximums nehme, gibt es in der Datentabelle keinen entsprechenden Datenwert, mit dem der x-Wert abgeglichen und ermittelt werden könnte.Ich habe dies getan, um den x-Wert zu erhalten, der zum Maximum passt, aber jetzt ist kein passender Wert vorhanden, da es sich um einen berechneten Wert handelt.Ich versuche, den halben Wert als Wert zu verwenden, um die entsprechenden x-Werte zu extrahieren.Ähnlich wie im obigen Skript, bei dem die Werte abgerufen werden, die den Nullpunkt überschreiten, muss ich die Werte ermitteln, die dem berechneten Halbwert am nächsten kommen.Ich habe versucht, den halben Wert als Variable für jede Teile-ID festzulegen und jede Teile-ID durchzugehen und die Werte zu erhalten, die dem halben Wert am nächsten kommen:
Dies würde ähnlich wie das obige Skript funktionieren, das die Werte erhält, die der Null am nächsten kommen, mit der Ausnahme, dass es die Werte erhält, die den halben Werten am nächsten kommen, die für jede Teile-ID berechnet werden.
Betreff: Extrahieren von Daten aus Diagramm/DatentabelleWenn ich Ihre Frage richtig interpretiere, ist es meiner Meinung nach der einfachste Weg, Ihre Übersichtstabelle zu nehmen und einen Tables==>Join-Abgleich für die Teile-ID durchzuführen.Der Maximalwert wird zu jeder Zeile für die entsprechende Teile-ID hinzugefügt
Betreff: Extrahieren von Daten aus Diagramm/DatentabelleIch habe eine andere Frage.Ich sammle einen weiteren Parameter aus meinem Datensatz und habe eine Übersichtstabelle erstellt, die den Maximalwert für diesen Parameter ermittelt.Von dort nehme ich die Hälfte dieses Wertes und notiere ihn in einer neuen Spalte („halber Wert“).Ich möchte den halben Wert im Skript verwenden, um die entsprechenden x-Werte für jede Teile-ID zu erhalten:

Jede Teile-ID hat einen anderen Halbwert.Das Obige ist der Abschnitt des Skripts, in dem der halbe Wert eingefügt werden muss, um den entsprechenden Schrittwert zu erhalten.Ich habe Probleme, den Halbwert ordnungsgemäß in das Skript zu integrieren und jede Teile-ID und den zugehörigen Halbwert zu indizieren. Was ist der beste Weg, um für jede Teile-ID den richtigen halben Wert in das Skript einzufügen?
Betreff: Extrahieren von Daten aus Diagramm/DatentabelleDanke Jim!
Das funktioniert großartig.
Betreff: Extrahieren von Daten aus Diagramm/DatentabelleHier ist eine Überarbeitung des Codes, um die Teile-ID in den Mix zu integrieren
Namen standardmäßig hier ( 1 ) ;
dt = Aktuelle Datentabelle () ;
dtout = Neuer Tisch ( „Ausgänge“ ,
Neue Spalte ( „Teile-ID“ , Charakter) ,
Neue Spalte ( „FirstMin“ ) ,
Neue Spalte ( „SecondMin“ )
) ;
Aktuelle Datentabelle (dt) ;
Für ( ich = 1 , ich <= N Zeilen (dt) - 1 , ich ++,
// Zu Beginn der Schleife durch die Daten und wenn die Teile-ID
// ändert sich, müssen die FirstMin- und SecondMin-Werte auf gesetzt werden
// fehlende Werte
Wenn ( ich == 1 ,
ErsteMin = . ;
SekundeMin = . ;,
dt : Teile-ID != dt : Teile-ID[i - 1 ] ,
ErsteMin = . ;
SekundeMin = . ;
) ;
// Wenn ein Wert gefunden wird, der Null überschreitet, verarbeiten Sie die Daten
Wenn ( (DT : j >= 0 & DT : y[i + 1 ] <= 0 ) | (DT : j <= 0 & DT : y[i + 1 ] >= 0 ) ,
Wenn ( Abs (DT : j ) < Abs (DT : y[i + 1 ] ) ,
Mindest = DT : j ;
Minrow = ICH ;
,
Mindest = DT : y[ich + 1 ] ;
Minrow = ich + 1 ;
) ;
// Wenn dies die erste Kreuzung ist, legen Sie die Werte für firstMin fest
Wenn ( Wird vermisst (FirstMin) ,
ErsteMin = Mindest ;
Erste Reihe = Minrow ;,
// Wenn dies die zweite Kreuzung ist, legen Sie die Werte für SecondMin fest
// und wählen Sie auch die Zeilen in der Eingabedatentabelle aus
// und schließlich erste und zweite Ergebnisse an die Ausgabe ausgeben
// Datentabelle
// Weil wir nur Daten für die ersten beiden Überfahrten sammeln
// und verwenden die Werte FirstMin und SecondMin
// fehlen als Trigger im Skript, einmal sowohl First als auch Second
// Mindestwerte werden auf tatsächliche Werte gesetzt, alle nachfolgenden Überschreitungen
// wird ignoriert, bis eine Teile-ID-Änderung erkannt wird
Wird vermisst (SecondMin) ,
SekundeMin = Mindest ;
Zweite Reihe = Minrow ;
// Zeigen Sie zurück auf die Eingabedatentabelle, um die Zeilen auszuwählen
aktuelle Datentabelle (dt) ;
Ausgewählt ( Zeilenstatus ( Erste Reihe ) ) = 1 ;
Ausgewählt ( Zeilenstatus ( Zweite Reihe ) ) = 1 ;
dtout << Zeilen hinzufügen ( 1 ) ;
dtout : Teile-ID[ N Zeilen ( dtout )] = dt : Teile-ID[SecondRow] ;
dtout : FirstMin[ N Zeilen (dtout)] = ErsteMin ;
dtout : SecondMin[ N Zeilen (dtout)] = SekundeMin ;
) ;
) ;
) ;
Betreff: Extrahieren von Daten aus Diagramm/DatentabelleEine weitere Frage dazu, wie Sie dieses Skript dazu bringen können, eine Tabelle mit vielen Teilen zu durchlaufen.Ich habe 3 Spalten in der Datentabelle; Teile-ID, Schritt, Wert.Es gibt viele verschiedene Teile und jeder hat mehrere hundert Stufen.Ich möchte die beiden Nulldurchgänge wie oben für jede eindeutige Teile-ID in der Tabelle erhalten.Sie sind sich nicht sicher, wie Sie am besten eine eindeutige Teile-ID erhalten und diese in das obige Skript einfügen können, um die beiden benötigten Werte für jede Teile-ID zu erhalten?
Betreff: Extrahieren von Daten aus Diagramm/DatentabelleDanke Jim!
Das ist genau das, was ich brauchte und funktioniert so, wie Sie es in Ihrem Beitrag beschrieben haben.Ich arbeite jetzt daran, die gesammelten Daten in weitere Analyseskripte zu integrieren.
Danke noch einmal.
Betreff: Extrahieren von Daten aus Diagramm/DatentabelleMeiner Meinung nach müssen Sie dies so angehen, dass Sie die Daten durchgehen und dann herausfinden, wann die Daten beim ersten und zweiten Mal den Nullpunkt überschreiten.Wenn die Daten 0 überschreiten, ermitteln Sie, welcher der Werte am nächsten an Null liegt, und zeichnen Sie dann den Wert und die Zeile auf.Wiederholen Sie den Vorgang dann beim zweiten Vorkommen und hören Sie dann mit dem Lesen auf.Wählen Sie abschließend die gefundenen Zeilen aus.Hier ist ein einfaches Skript, das genau das tut, was ich oben beschrieben habe:
Namen standardmäßig hier ( 1 ) ;
dt = Aktuelle Datentabelle () ;
ErsteMin = . ;
SekundeMin = . ;
Für ( ich = 1 , ich <= N Zeilen (dt) - 1 , ich ++,
Wenn ( ( ( : j >= 0 & : y[i + 1 ] <= 0 ) | ( : j <= 0 & : y[i + 1 ] >= 0 ) ,
Wenn ( Abs ( : j ) < Abs ( : y[ich + 1 ] ) ,
Mindest = : j ;
Minrow = ICH ;
,
Mindest = : y[ich + 1 ] ;
Minrow = ich + 1 ;
) ;
Wenn ( Wird vermisst (FirstMin) ,
ErsteMin = Mindest ;
Erste Reihe = Minrow ;
,
SekundeMin = Mindest ;
Zweite Reihe = Minrow ;
Brechen () ;
) ;
) ;
ausgewählt ( Zeilenstatus (Erste Reihe)) = 1 ;
ausgewählt ( Zeilenstatus (Zweite Reihe)) = 1 ;