こんにちは-私はこのワークフローに従うスクリプトを書き込もうとしています:
1-特定の開始日時(2021年10月1日午前11:00など)にループを開始します。これを行nと呼びます。col1 [rown]から値を取得します。
2-次の行、n +1に移動します。 col2 = col1 [n + 1] -col1 [n]を設定します。
3-次の行n + 2に移動し、col2 = col1 [n +2]を設定します-col1 [n]
4-次の行n + 3に移動し、col2 = col1 [n + 3] --col1 [n]を設定します。datetime [n + k] = datetime [n] + 7日まで、後続の各行をループし続けます。(kは、ループが進むにつれて行間の時間増分に応じて変化することに注意してください。たとえば、時間は、問題の行に応じて、ある行から次の行に5分、15分、1時間など増加します。)
5-ステップ4で取得した新しい「開始日」を使用して、データの新しい週ごとにステップ1から4を繰り返します。さらに7日間のデータをループし続けます。
6-データテーブルの行がなくなるまで、手順5を繰り返します。
目標は、1週間分の行をその週の最初の行と比較するcol1データの計算を実行し、その後の各週(2週目、3週目、4週目など)ごとにこれをすべてまで繰り返すことです。行が処理されました。:)
データがどうなるかを示す小さなデータテーブルを提供できますか?または、少なくとも使用しているデータテーブルはどのようになっていますか? 列の数式の方が簡単な解決策のようです。
こんなこと言ってるのかな?
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])
)
));
);
もちろん。ありがとうございました。添付されているのは、例としてExcelで作成したデータセットのスニペットです。
ヴィンスありがとう。私は今これを経験しています....JSL初心者として(!)私はあなたのアプローチに従うのに役立ついくつかの質問があります。新しいデータテーブルに5行が追加されたのはなぜですか?なぜ「値を設定」する必要があり、なぜこれらの5つの数値が選択されたのですか?スクリプトは3週間ですが、実際のデータセットは約120週間です。
最後に、スクリプトはどの列が計算する値(つまり、私の例では「フロー」)であるかをどのように知るのでしょうか。(私のデータテーブルには、私の例に示されている3つよりも多くの列があります。)列を切り替えるよりも、列名を割り当てる方が簡単ではないでしょうか。私はおそらくここで何かが欠けています。