こんにちは、みんな、
私はより強力な統計ソフトウェアを使用するのが初めてで、ゆっくりとコツを学んでいます。 私はフィードバックを実装するのは得意ですが、自分自身の研究はあまり得意ではありません。
私は電池を使って仕事をしています。 私たちは大量のデータを収集し、知りたいことに応じてさまざまなテストを使用します。 生成されるデータは、セルの充電、休止、放電、そして再び休止するという性質上、周期的です。 これらはステップと呼ばれます。
1 つのテスト (私はこれをランと呼びます) で、あるレジームで複数のサイクルを実行し、次に別のレジームで複数のサイクルを実行することがあります。 したがって、サイクル、ステップ、および実行の要素としての応答 (電流、電圧、容量、エネルギーなど) を追跡できることが私にとって重要です。
私のクエリでは、11 から始まり、4 行ごとに値 1 ずつ増加する列式が必要です。 この列は、複数の実行にわたるサイクルの合計数を追跡します。 4 ずつ増加する必要がある理由は、各サイクルのステップ数が 4 であるためです。
さらにわかりやすくするために、例を挙げてみましょう。
列 1 には「実行」というラベルが付いています。 特定のテストの番号を連続して追跡します。
列 2 には「合計サイクル数」というラベルが付いています。 これは適切にコーディングする必要がある列です。
列 3 には「実際のサイクル番号」というラベルが付いています。 特定のテストのサイクル数を記述します。 これらの値は周期的であり、新しい実行が開始されるたびに 1 に戻ります。 それらの上限は一貫していません。 各サイクルのステップ数に応じて値も繰り返されます。 値の例は、1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,1,1,1,1,2,2 です。 、2、2など。
列 5 には RawStepID というラベルが付いています。 各サイクルの開始時に 1 にリセットされます。 例としては、1,2,3,4,1,2,3,4,1,2,3,4 などがあります。
列 6+ は取得されたデータです。
列 2 に対するこれまでの私のアプローチは、ローカル変数を使用して IF ステートメントを準備するというものでした。 RawStepID == 1 になるたびに、この変数の値を 1 ずつインクリメントしたいと考えています。 11 で開始し、RawStepID=1 の場合は 12 になり、次の RawStepID=1 の場合は 13 になる、というようにする必要があります。次に、変数の現在の値を表示する数式が必要です。
つまり、列 3 に入力したデータを使用する場合、この列の値は次のようにする必要があります。
11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17, 17、17、17、18、18、18、18など
これが明らかだといいのですが。 それまでの間、他のメンバーがやっているのを見てきたように、フォーラムの投稿にテーブルを含める方法を試してみます。失敗した場合は、ここに添付するダミーのテーブルを作成します。
ありがとう、
怖いアンテロープ。
Lag は前の行の値を参照するだけです。ヘルプまたはスクリプト インデックスで Lag を検索すると、もう少し詳しい情報が得られます。2 番目の条件は、いくつかの連続する行で ActualCycleNumber が 1 であり、1 である最初の行でのみリセットされる必要がある場合に適用されます。アプリケーションではこれは必要ないかもしれません。
こんにちは@ih 、
ありがとう! あなたが提供した2番目のアプローチは、まさに私が実装しようとしていたものです。 私のコードがどのようなものかは公開しませんが、最も茹ですぎた種類のスパゲッティであることは保証できます。
私の理解が正しければ、これは非常に柔軟な解決策でもあります。 行 2 の 11 を変更することで行の開始番号を変更でき、行 3 の終わりにある合計サイクル数のラグを変更することで増分を変更できます。このコードを増分に適応させる方法がわかります。実際のサイクル数が 1 に戻るたびに実行値。
If(
Row() == 1, 23,
:ActualCycleNumber == 1 & Lag ( :ActualCycleNumber ) != 1, Lag ( :Run ) + 1,
Lag ( :Run )
)
合計サイクル数の増加に関する 2 番目の条件の影響がわかりません。 または、ラグの一般的な使用方法。 そのような原則を学ぶための良いリソースを説明または紹介してもらえますか?
やあ@スタットマン
この特定のシナリオでは、そうです。 ただし、合計サイクル数は、複数の実行にわたるデータを追跡するためにクエリで頻繁に使用します。 したがって、たとえば、実行 1 に固有のこのテーブルと、実行 2 に固有のデータ用の別のテーブルを作成できます。 どちらの場合も、実際のサイクル数は 1 から始まり、(テスト内で定義された) まで増加します。 ただし、合計サイクル数は、すべての実行でそのバッテリーが経験した実際のサイクル数の累積合計から始まります。
別の見方では、実際のサイクル数は実験用ソフトウェアから取得した生データであり、合計サイクル数は処理されたデータです。 そして最後の例を 1 つ挙げます。
実行 1 には 30 サイクルが含まれます。 この場合、合計サイクル数と実際のサイクル数は両方とも 1 から始まり 30 で終わります。 実行 2 には 15 サイクルが含まれます。 合計サイクル数は 31 で始まり、45 で終わります。 実際のサイクル番号は 1 から始まり 15 で終わります。 実行 3 には 102 サイクルが含まれます。 合計は 46 で始まり、147 で終わり、実際は 1 で始まり 102 で終わり、などです。多くの場合、この種の増分は同じデータ テーブル内で発生します。 すべての実行における合計サイクル数を追跡することは、バッテリーの健全性の重要な要素の 1 つであるため、分析に非常に役立ちます。
これで現状のデータの必要性が解消されることを願っています。
どのような質問に答えようとしていますか? ざっと見てみると、列 2 (11,11,11,11,12...) は列 1 (1,1,1,1,2...) と混同されるため、これは役に立ちません。 各列は一意の X または Y である必要があります。
やあ@ScaredAntelope 、
列 2 の「合計サイクル数」にアプローチするには、行ごとに明示的に定義する 2 つの方法があります。
11 + Floor( (Row() - 1) / 4 )

または、あなたが今やっていると思う方法で計算してください。
If(
Row() == 1, 11,
:RawStepID == 1 & Lag( :RawStepID ) != 1, Lag( :Total Cycle Number ) + 1,
Lag( :Total Cycle Number )
)

中間の条件で合計サイクル数を増やすには 2 つの条件が必要であることに注意してください。 これを拡張して他の列もチェックすることもできます。たとえば、実際のサイクル数も 1 にする必要があるかもしれません。