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.Wert aus col1[Zeile n] abrufen.
2 - gehe zur nächsten Zeile, n+1. setze col2 = col1 [n+1] - col1[n].
3 - gehe zur nächsten Zeile, n+2, setze col2 = col1 [n+2] - col1[n]
4 - gehe zur nächsten Zeile, n+3, setze col2 = col1[ n+3] - col1[n].Fahren Sie mit der Schleife durch jede nachfolgende Zeile fort, bis datetime[n+k] = datetime[n] + 7 Tage ist.(Beachten Sie, dass k im Verlauf der Schleife je nach Zeitinkrement zwischen den Zeilen variiert; z. B. erhöht sich die Zeit von einer Zeile zur nächsten um 5 Minuten, 15 Minuten, 1 Stunde usw.
5 - Wiederholen Sie die Schritte 1 bis 4 für jede neue Datenwoche, indem Sie ein neues "Startdatum" verwenden, das Sie in Schritt 4 erhalten haben. Fahren Sie mit der Schleife durch weitere 7 Datentage fort.
6 - Wiederholen Sie Schritt 5, bis die Datentabelle keine Zeilen mehr hat.
Das Ziel besteht darin, Berechnungen für col1-Daten durchzuführen, die die Zeilen einer Woche mit der ersten Zeile dieser Woche vergleichen, und dies dann für jede nachfolgende Woche (Woche 2, Woche 3, Woche 4 usw.) immer wieder zu wiederholen, bis alle Zeilen wurden verarbeitet.:)
SkriptingRe: Wie erstelle ich zwei verschachtelte Schleifen?Können Sie eine kleine Datentabelle mit den erwarteten Daten angeben?Oder wie sieht zumindest die von Ihnen verwendete Datentabelle aus? Es klingt, als wäre eine Spaltenformel eine einfachere Lösung.
Re: Wie erstelle ich zwei verschachtelte Schleifen?Ich denke, du könntest so etwas sagen?
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])
)
));
);
Re: Wie erstelle ich zwei verschachtelte Schleifen?Sicher.Dankeschön.Im Anhang ist ein Ausschnitt eines Datensatzes, den ich als Beispiel in Excel erstellt habe.
Re: Wie erstelle ich zwei verschachtelte Schleifen?Danke Vince.Ich gehe das jetzt durch .... als JSL-Neuling (!) habe ich ein paar Fragen, die mir helfen werden, Ihrem Ansatz zu folgen.Warum wurden einer neuen Datentabelle 5 Zeilen hinzugefügt?Warum mussten Sie "Werte festlegen" und warum wurden diese fünf Zahlen ausgewählt?Ihr Skript ist für 3 Wochen, aber mein tatsächlicher Datensatz hat ungefähr 120 Wochen.
Woher weiß das Skript schließlich, welche Spalte der Wert ist, für den es berechnet werden soll (dh "Flow" in meinem Beispiel)?(Meine Datentabelle hat mehr Spalten als die drei in meinem Beispiel gezeigten.) Wäre es nicht einfacher, den Spaltennamen zuzuweisen, anstatt durch die Spalten zu wechseln?Wahrscheinlich übersehe ich hier etwas.