Wie erstelle ich eine neue Spalte mit der Versuchsnummer in einer Datentabelle mit gestapelten, sich wiederholenden kontinuierlichen Daten?Hallo,
Ich habe eine Datentabelle mit sich wiederholenden, kontinuierlichen Experimenten. Die Daten sind also bereits gestapelt. Ich habe eine Spalte, in der jedes neue Experiment mit 1, dann 2 und so weiter bis zur letzten Messung beginnt. Ich möchte eine neue Spalte mit der Experimentnummer erstellen, sodass jedes Mal, wenn die andere Spalte mit 1 beginnt, ein neues Experiment beginnt.
Ich habe versucht, dieses Skript mithilfe von KI zu schreiben, aber es funktioniert nicht. Ich hoffe, jemand kann mir dabei helfen.
dt = Aktuelle Datentabelle();
// Spalte zur Identifizierung neuer Experimente
experimentIdentifier = Column(dt, "Column1"); // Es ist Column1, die Zahlen von 1 bis 100 enthält, die sich immer wiederholen.
// Neue Spalte für Probennummern erstellen
dt << Neue Spalte("SampleNumber", Numerisch);
// Variablen initialisieren
aktuellesExperiment = Experimentkennung[1];
Beispielnummer = 1;
// Durchlaufen Sie jede Zeile mit expliziter Zeilenindizierung
Für (i = 1, i <= N Zeile(dt), i++,
Wenn(experimentIdentifier[i] != aktuellesExperiment,
// Neues Experiment startet, Probennummer zurücksetzen
aktuellesExperiment = Experimentkennung[i];
Beispielnummer = 1;
,
// Andernfalls erhöhen Sie die Sample-Nummer
Beispielnummer++;
);
// Der neuen Spalte eine Probennummer zuweisen
dt:Beispielnummer[i] = Beispielnummer;
);
Automatisierung und SkriptingDatenzusammenführung und -bereinigungBetreff: Wie erstelle ich eine neue Spalte mit der Versuchsnummer in einer Datentabelle mit gestapelten, sich wiederholenden kontinuierlichen Daten?Erstellen Sie eine neue Spalte und legen Sie Folgendes als Formel fest:
Col Cumulative Sum( 1, :Column 1 )
Spalte 1 ist die Spalte, die die Messnummern enthält.
Gehirnfurz.
Betreff: Wie erstelle ich eine neue Spalte mit der Versuchsnummer in einer Datentabelle mit gestapelten, sich wiederholenden kontinuierlichen Daten?Length( Loc( :Column 1[1 :: Row()], 1 ) )
Diese Formel funktioniert.
Betreff: Wie erstelle ich eine neue Spalte mit der Versuchsnummer in einer Datentabelle mit gestapelten, sich wiederholenden kontinuierlichen Daten?Sie können Col Cumulative Sum() verwenden, aber das ist nicht so schön.
Col Cumulative Sum( If( :Column 1 == 1, :Column 1, 0 ) )
Betreff: Wie erstelle ich eine neue Spalte mit der Versuchsnummer in einer Datentabelle mit gestapelten, sich wiederholenden kontinuierlichen Daten?Ich verstehe nicht, wie ich das in einem Skript verwenden soll.
Ich habe das auch versucht, aber bisher haben alle Zeilen in meiner neuen Spalte den Wert 1. Sehen Sie, was nicht funktioniert?
dt = aktuelle Datentabelle () << Neue Spalte("Experiment Nr",
Numerisch,
Formel(
If( Row() == 1, 1, // Initialisiere die Experimentnummer als 1 für die erste Zeile
If( :Point No. == 1 & Lag(:Point No.) != 1, Lag(:Experiment No) + 1, // Erhöhe die Experimentnummer, wenn "Point No." auf 1 zurückgesetzt wird
Lag(:Experiment Nr., 1) // Andernfalls behalte die gleiche Experimentnummer bei
)
)
)
);
Betreff: Wie erstelle ich eine neue Spalte mit der Versuchsnummer in einer Datentabelle mit gestapelten, sich wiederholenden kontinuierlichen Daten?Hallo @WhiteCow2000 ,
Ich habe es versucht, indem ich die Position der „1“ mit einer aufsteigenden Zahl markiert und dann die Option „Füllen > Fehlendes durch vorherigen Wert ersetzen“ kopiert habe, die in JMP manuell ausgeführt werden kann. Um die Flexibilität zu erhöhen, habe ich ein Fenster hinzugefügt, in dem Sie die zu messende Spalte auswählen können.
Names Default To Here( 1 );
dt = current data Table ();
dt << Clear Column Selection();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way then it will adapt to that so be careful.
//Window to select the column with repeats
nw = New Window( "Launch Dialog",
<<MODAL></MODAL>
<P>Die einfache Version des Skripts, in der Sie die genauen Spaltennamen in JSL eingeben, finden Sie hier:<BR /><BR /></P>
<CODE class=" language-jsl">Names Default To Here( 1 );
dt = current data Table ();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way
//Window to select the column with repeats
//Add a column to track experiment number
dt<<NEW column=""></NEW>
Betreff: Wie erstelle ich eine neue Spalte mit der Versuchsnummer in einer Datentabelle mit gestapelten, sich wiederholenden kontinuierlichen Daten?KI ist mit JSL ziemlich schlecht. Die Anwendung meiner Lösung ist unkompliziert. Ich habe auch Ihre letzte Formel ausprobiert, und sie hat gut funktioniert.
dt = New Table( New Column( "Point No.", Set Values( Repeat( 1 :: 100, 4 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Length( Loc( :Point No.[1 :: Row()], 1 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Col Cumulative Sum( If( :Point No. == 1, :Point No., 1, 0 ) ) ) );
dt << New Column( "Experiment No",
Numeric,
Formula(
If( Row() == 1,
1, // Initialize experiment number as 1 for the first row
If( :Point No. == 1<SPAN> & Lag(:Point No.) != 1</SPAN>,
Lag( :Experiment No ) + 1, // Increment experiment number if "Point No." resets to 1
Lag( :Experiment No, 1 ) // Otherwise, keep the same experiment number
)
)
)
);

Betreff: Wie erstelle ich eine neue Spalte mit der Versuchsnummer in einer Datentabelle mit gestapelten, sich wiederholenden kontinuierlichen Daten?Vielen Dank für Ihre Hilfe! Es funktioniert jetzt sowohl mit der If-Formel als auch mit der Längenformel!
Betreff: Wie erstelle ich eine neue Spalte mit der Versuchsnummer in einer Datentabelle mit gestapelten, sich wiederholenden kontinuierlichen Daten?Ich kehre einige Wochen später zu diesem Thread zurück, um eine nette Lösung für ein ähnliches Problem mitzuteilen, die meiner Meinung nach mit einer einfacheren Formel besser funktionieren könnte:
Gelöst: Wie erhalte ich eine neue Spalte, um Zyklen in einem großen Datensatz für mehrere Zyklen zu füllen? - JMP-Benutzergemeinschaft