Wie erstelle ich zwei verschachtelte Schleifen?Hallo, ich versuche, ein Skript zu schreiben, das diesem Workflow folgt:
1 – Beginnen Sie eine Schleife an einem bestimmten Startdatum (z. B. 1. Oktober 2021, 11:00 Uhr).Ich werde dies als Zeile n bezeichnen.Erhalten Sie den Wert aus Spalte1[Zeile n].
2 – gehe zur nächsten Reihe, n+1. setze Spalte2 = Spalte1 [n+1] - Spalte1[n].
3 – gehe zur nächsten Zeile, n+2, setze Spalte2 = Spalte1 [n+2] – Spalte1[n]
4 – gehe zur nächsten Zeile, n+3, setze Spalte2 = Spalte1[n+3] – Spalte1[n].Fahren Sie mit der Schleife durch jede nachfolgende Zeile fort, bis datetime[n+k] = datetime[n] + 7 Tage.(Beachten Sie, dass k abhängig vom Zeitinkrement zwischen den Zeilen im Verlauf der Schleife variiert; z. B. erhöht sich die Zeit von einer Zeile zur nächsten um 5 Minuten, 15 Minuten, 1 Stunde usw., abhängig von der betreffenden Zeile.)
5 – Wiederholen Sie die Schritte 1 bis 4 für jede neue Woche mit Daten, indem Sie ein neues „Startdatum“ verwenden, das Sie in Schritt 4 erhalten haben. Fahren Sie mit der Schleife durch weitere 7 Tage mit Daten fort.
6 – Wiederholen Sie Schritt 5, bis die Datentabelle keine Zeilen mehr hat.
Das Ziel besteht darin, Berechnungen für col1-Daten durchzuführen, bei denen die Zeilen einer Woche mit der ersten Zeile dieser Woche verglichen werden, und dies dann für jede nachfolgende Woche (Woche 2, Woche 3, Woche 4 usw.) immer wieder zu wiederholen, bis alle Zeilen wurden verarbeitet.: )
Qualitäts- und VerfahrenstechnikBetreff: Wie erstelle ich zwei verschachtelte Schleifen?Danke Vince!Das wird hilfreich sein.Ich glaube, ich bin jetzt auf dem richtigen Weg.: )
Betreff: Wie erstelle ich zwei verschachtelte Schleifen?Okay, es hört sich so an, als ob du es sagst
Den frühesten Flusspunkt jeden Tag von jedem Fluss abziehen?Das ist es, was Sie versuchen?Ich vermute, weil ich nicht glaube, dass 13:15 Uhr eine Sache ist.:D
Names default to here(1);
dt = current data table(); // this assumes your table
// I'm going to make a bunch of extra columns to kind of show you smaller steps
// we really want to be able to say, This is the first row of the day
// so let's make a date column
dt << New Column("Just Date", <<FORMULA></FORMULA>
Sobald Sie die kleinste Zeile für den Tag haben, müssen Sie nur noch die letzte neue Spalte ausführen, beliebig oft für so viele Spalten, zu denen Sie die Differenz berechnen möchten.
Ich hoffe, ich habe die Dinge nicht zu kompliziert gemacht, denn ich habe Ihre ursprüngliche Frage zu verschachtelten For-Schleifen definitiv nicht beantwortet.
Betreff: Wie erstelle ich zwei verschachtelte Schleifen?Ich habe gerade eine Beispieltabelle mit dem erstellt, was Sie vermutlich gesagt haben.Ich habe es heute gerade geschafft() + 1 Sekunde pro Zeile.
Ich wusste nichts über Ihre Tabelle, also habe ich sie einfach mit allen Spalten versehen.
und ich kann deinen ursprünglichen Beitrag nicht verstehen.
Betreff: Wie erstelle ich zwei verschachtelte Schleifen?Das Skript hat eine neue Tabelle mit 5 Zeilen und den folgenden 6 Spalten erstellt:
Woche 1, Woche 2, Woche 3, Vergleich Woche 1, Vergleich Woche 2, Vergleich Woche 3.
(Die 5 Zeilen galten für Datumsangaben vom 13.10.2021 8:18:05 Uhr bis 13.10.2021 8:18:09 Uhr.)
Ich versuche, in meiner vorhandenen Tabelle nur eine neue Spalte zu erhalten, eine Spalte mit den Ergebnissen der in meinem ursprünglichen Beitrag beschriebenen Berechnung.Ich würde alle Zeilen der ursprünglichen Datentabelle zusammen mit einer neuen Spalte gemäß der Beschreibung in meinem ursprünglichen Beitrag berechnen lassen.
Betreff: Wie erstelle ich zwei verschachtelte Schleifen?Als Kontext ist im Anhang meine aktuelle JMP-Tabelle aufgeführt, falls es hilfreich ist.(Ich möchte basierend auf der Spalte „Pred Formula LOG_ECOLI_PEAR“ berechnen.)
Betreff: Wie erstelle ich zwei verschachtelte Schleifen?Danke, Vince.Ich mache das gerade durch ... als JSL-Neuling (!) habe ich ein paar Fragen, die mir helfen werden, Ihrem Ansatz zu folgen.Warum wurden 5 Zeilen zu einer neuen Datentabelle hinzugefügt?Warum mussten Sie „Werte festlegen“ und warum wurden diese fünf Zahlen ausgewählt?Ihr Skript ist für 3 Wochen ausgelegt, aber mein tatsächlicher Datensatz umfasst etwa 120 Wochen.
Woher weiß das Skript abschließend, in welcher Spalte der Wert berechnet werden soll (z. B. „Flow“ in meinem Beispiel)?(Meine Datentabelle enthält mehr Spalten als die drei in meinem Beispiel.) Wäre es nicht einfacher, den Spaltennamen zuzuweisen, als durch die Spalten zu wechseln?Wahrscheinlich übersehe ich hier etwas.
Betreff: Wie erstelle ich zwei verschachtelte Schleifen?Sicher.Danke schön.Im Anhang finden Sie einen Ausschnitt eines Datensatzes, den ich als Beispiel in Excel erstellt habe.
Betreff: Wie erstelle ich zwei verschachtelte Schleifen?Ich denke, Sie sagen vielleicht so etwas?
Names default to here(1);
dt = New Table( "Untitled 1133",
Add Rows( 5 ),
New Column( "Week1",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 22, 0 ),
Input Format( "d/m/y h:m:s", 0 ),
Set Values( [3716957885, 3716957886, 3716957887, 3716957888, 3716957889] )
),
New Column( "Week2",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 22, 0 ),
Input Format( "d/m/y h:m:s", 0 ),
Set Values( [3716957885, 3716957886, 3716957887, 3716957888, 3716957889] )
),
New Column( "Week3",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 22, 0 ),
Input Format( "d/m/y h:m:s", 0 ),
Set Values( [3716957885, 3716957886, 3716957887, 3716957888, 3716957889] )
)
);
nc = ncols(dt);
for(i=1, i<=nc, i++,
col_name = column(i) << Get Name(); // get the original column name
Eval(EvalExpr( // you have to do this so you can substitute in the actual col_name instead of a variable
dt << New Column(col_name || " comparison",
// just take current row minus first row
formula(Expr(column(dt, col_name))[row()]-Expr(column(dt, col_name))[1])
)
));
);
Betreff: Wie erstelle ich zwei verschachtelte Schleifen?Können Sie eine kleine Datentabelle mit den erwarteten Daten bereitstellen?Oder wie sieht zumindest die Datentabelle aus, die Sie verwenden? Es hört sich so an, als wäre eine Spaltenformel eine einfachere Lösung.