Wie kann ich meine Daten bezüglich eines festen Wertes initialisieren?Hallo, ich möchte eine Formel implementieren, um einige Daten in unseren Tabellen zu „initialisieren“. Genauer gesagt möchte ich von allen Elementen in einer Spalte den Wert der ersten Wiederholung des Testlaufs abziehen (die Wiederholungsinformationen sind in einer anderen Spalte enthalten).
Ich füge die Tabelle bei, an der ich arbeite. Die Formel würde in Spalte „X_35“ integriert werden. Die Idee ist, jedem Test den in X_22 enthaltenen Wert zuzuweisen, der bei der ersten Wiederholung (Spalte X_21) der Analyse erhalten wurde, wobei jedoch nach Testbedingung gefiltert wird. Insbesondere bin ich an einer Trennung nach anderen Spalten interessiert (z. B. X_5, X_7 und X_8). Danach würde ich die Differenz für jede Zeile anwenden und die Offsets für jeden Punkt ab der ersten Wiederholung erhalten. Ich möchte, wenn möglich, eine Lösung mit einer Spaltenformel finden und die manuelle Eingabe von Werten vermeiden.
Ich arbeite mit JMP 17
Danke
Grundlegende Datenanalyse und ModellierungDatenexploration und -visualisierungWindowsBetreff: Wie kann ich meine Daten bezüglich eines festen Wertes initialisieren?Willkommen in der Community.
Ich bin etwas verwirrt, was Sie fragen. Was ich in Ihren Daten sehe, ist, dass
Spalte X_31 definiert jede der 8 Datenebenen, wobei jede dieser Zeilengruppierungen für Spalte X_21 Untergruppierungswerte von 1 bis 980 hat.
Ich denke, Sie möchten für eine bestimmte Zeile, die nicht den X_21-Wert 1 hat, deren Werte für X_5, X_7 und X_8 betrachten und dann den Anfangswert für X, die übereinstimmenden Werte für die Spalte X_22 ermitteln und diesen Wert vom aktuellen Zeilenwert für die Spalte X_22 abziehen.
Ich bin meiner Einschätzung überhaupt nicht sicher. Bei der Untersuchung der Daten gibt es für jede Gruppierung von X_31-Anfangswerten weitaus mehr Kombinationen für die Spalten X_5, X_7 und X_8.
Was Sie derzeit in Ihrer bereitgestellten Datentabelle zeigen, wo die Werte von X_35 aus Spalte X_22 kopiert werden, wenn der Wert von X_21 gleich 1 ist, lässt sich in JMP ganz einfach tun. Zu verstehen, was Sie für die anderen Zeilen wollen, ist verwirrend. Es wäre sehr hilfreich, wenn Sie angeben könnten, was Ihr erwartetes Ergebnis für Zeile 7 und Zeile 14 wäre und welche Schritte unternommen wurden, um zu Ihrem Ergebnis zu gelangen.
Betreff: Wie kann ich meine Daten bezüglich eines festen Wertes initialisieren?Hallo, danke für die schnelle Antwort. Entschuldigen Sie meine schlechte Erklärung, aber ich hoffe, es ist schwieriger zu erklären als zu lösen.
Ich werde es mit einer schematischen Tabelle versuchen.
Das Ziel besteht darin, die Spalte „Anfangswert“ zu erhalten, die für jede Messung den Wert enthält, der der ersten Wiederholung je nach Testtyp entspricht und hier als A oder B bezeichnet wird. Dann erhalte ich mit einer einfachen Differenz den vom ersten Experiment ausgehenden, bei 0 beginnenden Wert.
Die Formel, die Sie in der anderen Nachricht gesehen haben, ist mein Versuch, die Spalte „Anfangswert“ mithilfe einer „Wenn“-Bedingung mit der Anzahl der Wiederholungen zu schreiben. Mein Problem besteht darin, was ich in die andere Bedingung schreiben soll, um denselben Wert für eine andere Anzahl von Wiederholungen zu erhalten.
Nochmals vielen Dank
Betreff: Wie kann ich meine Daten bezüglich eines festen Wertes initialisieren?Mit einer Spaltenformel können Sie das gewünschte Ergebnis erzielen
As Constant( dt = Current Data Table() );
currentType = :Type;
theInitialValue = :Value[(dt << get rows where( :Type == CurrentType & :Repetition == 1 ))[1]];
:Value - theInitialValue;

Die Methode funktioniert, allerdings ist die Formel bei einer Datentabelle mit mehr als 55.000 Einträgen nicht sehr effizient.
Eine effizientere Methode besteht darin, mithilfe eines einfachen Skripts eine neue Tabelle zu erstellen, die nur die Anfangswerte enthält, und diese Tabelle dann wieder mit der ursprünglichen Tabelle zusammenzuführen. Dabei ermöglicht der Abgleich die Replikation der Anfangswerte auf alle übereinstimmenden Datensätze.
names default to here(1);
dt=
New Table( "Example2",
Add Rows( 8 ),
New Column( "Type",
Character,
Set Values( {"A", "A", "A", "A", "B", "B", "B", "B"} )
),
New Column( "Repetition",
Numeric,
Set Values( [1, 2, 3, 4, 1, 2, 3, 4] )
),
New Column( "Value",
Numeric,
Set Values( [4, 10, 8, 7, 6, 9, 5, 10] )
)
);
// Create a table with the initial values
dt << select where(:Repetition == 1 );
initialDT = dt << subset( selected rows(1), columns({:Type,:Value}));
// Rename column Value to Initial Value
initialDT:Value << set name("Initial Value");
// Merge the values back to the original table
dt << Update(
With( initialDT ) ,
Match Columns( :Type = :Type )
);
// Create a column that contains the difference
dt << New Column( "Difference",
formula( :Value - :Initial Value )
);

Betreff: Wie kann ich meine Daten bezüglich eines festen Wertes initialisieren?Wenn Sie solche Normalisierungsschritte häufiger durchführen, können Sie die Normalisierungs-GUI in Betracht ziehen.
Neben dem Subtrahieren des „ersten“ Werts bietet es viele weitere Optionen wie „letzter“, N-1, „Median“, „Mittelwert“ (letztere berücksichtigen sogar den Zeilenausschluss).
Sie können entscheiden, ob Sie die Werte berechnen möchten oder ob Sie eine Formel bevorzugen, die die Werte automatisch aktualisiert, wenn die Eingabespalte aktualisiert wird.
Betreff: Wie kann ich meine Daten bezüglich eines festen Wertes initialisieren?Danke!
Ich versuche jetzt, den Code mit allen benötigten Variablen zu implementieren. Im Moment funktioniert alles.