他の列からのパターンに基づいて2つの列を生成しようとしていますこんにちは、みんな、
他の2つの列(「必須の列1」と「必須の列2」)のパターンに基づいて、2つの新しい列を生成しようとしています。 添付画像をご覧ください-

ヘルプ/提案はありますか?
ありがとう。
スクリプティングRe:他の列からのパターンに基づいて2つの列を生成しようとしていますこれは、必須列2を参照する列の式です。コードを調べると、開始値と終了値を決定するときにチェックする必要があると述べたロジックルールを適用するだけであることがわかります。また、列1の値の設定も含まれています。この式を実行するには、必須列1と必須列2を作成するだけです。必須列2を文字列に設定します。次に、必須列2の式を開き、以下の式を列にコピーします。

RCValue = "";
:Required Column 1[Row()] = .;
If( :Sensor != "Primary",
other = "Yes"
);
If( Row() == 1 | :ID != Lag( :ID ) | :"Sub-set"n != Lag( :"Sub-set"n ),
counter = 0;
withinStart = "No";
other = "Yes";
);
If(
:Sensor == "Primary" & withinStart == "Yes",
RCValue = "End";
withinStart = "No";
other = "No";,
:Sensor == "Primary" & Lag( :Sensor, -1 ) != "Primary" & withinStart == "No" & other == "Yes" & Row() !=
N Rows( Current Data Table() ),
withinStart = "Yes";
counter = counter + 1;
RCValue = "Start";
);
If( withinStart == "Yes" | RCValue == "End",
:Required Column 1[Row()] = counter
);
RCValue;
Re:他の列からのパターンに基づいて2つの列を生成しようとしていますこんにちは@txnelson 、
それはほとんどいくつかの誤ったエントリで機能しました。 :Occurrence列に条件を追加する必要があると思います。 つまり、:Occurrenceを変更して:Required Column 2 == "Start"を設定する必要があります(オプションの場合もあります-:Required Column 2 == "End"の場合も同じである必要があります)。
--Dif(:Occurrence)!= 0 then only:Required Column 2 == "Start"のようなもの
私のサンプルデータ(95行)は数式で問題ありませんでしたが、実際のデータは30万行を超えているため、以下のような多くの間違ったエントリが表示されます-(:Occurrenceの追加要件が追加されたら問題ないと思います。 )これは、間違ったエントリのスクリーンショットの1つにすぎません。

うまくいけば!!数式/コードを変更し、:Occurrenceの要件を追加できます。あなたの式の上に。
よろしくお願いします。
Re:他の列からのパターンに基づいて2つの列を生成しようとしていますこんにちは@txnelsonそしてすべて、
要件に完全に基づいてコードを変更することができました。 しかし、第2段階のトラブルシューティングでは、次のようなものが必要です-
マーク:Sensor = "Primary"(1st):Occurrenceの連続した変化の周り。与えられたスクリーンショットで-
間に必要な値---最後の「プライマリ」の発生= 2と最初の「プライマリ」の発生= 3 【発生の連続変化】
最初のプライマリを見つけることはそれほど難しくありません、最後のプライマリを見つける方法がわかりませんか? Occurrence = 2のサブセットデータを何らかの方法で反転(降順)することを考えて、値を見つけてから元に戻します。 数式が入れられない!! それを行う他の方法はありますか?
何か助けはありますか?
ありがとう。

Re:他の列からのパターンに基づいて2つの列を生成しようとしています以前に提供したコードを変更して、最新の応答で提供した結果を取得しました。 サンプルデータテーブルに表示している結果を取得するために使用しているJSLを提供してください。
Re:他の列からのパターンに基づいて2つの列を生成しようとしていますこんにちは@txnelson 、 ご返信ありがとうございます。
正しい(更新された要件)開始点を取得できません。 データテーブル(「更新されたサンプルデータ」)と画像に、修正されたデータ列を手動で入力しました。
式。 以前は「必須列1古い」を取得していましたが、「必須列2古い」はこれです(あなたが私に与えたのと同じように、それに発生条件を追加しました)-
RCValue = "";
:Required Column 1[Row()] = .;
If( :Occurrence != Lag( Occurrence, -1 ),
other = "Yes"
);
If( Row() == 1 | :ID != Lag( :ID ) | :"Sub-set"n != Lag( :"Sub-set"n ),
counter = 0;
withinStart = "No";
other = "Yes";
);
If(
:Sensor == "Primary" & :Occurrence == Lag( :Occurrence, -1 ) & Dif( :Occurrence ) == 0 &
withinStart == "Yes",
RCValue = "End";
withinStart = "No";
other = "No";,
:Occurrence != Lag( Occurrence, -1 ) & Lag( :Sensor, -1 ) != "Primary" & withinStart == "No"
& other == "Yes" & Row() != N Rows( Current Data Table() ),
withinStart = "Yes";
counter = counter + 1;
RCValue = "Start";
);
If( withinStart == "Yes" | RCValue == "End",
:Required Column 1[Row()] = counter
);
RCValue;

どうもありがとう。
Re:他の列からのパターンに基づいて2つの列を生成しようとしています私は混乱しています。私が見ることができることから、私が書いたスクリプトは機能しているようですが、データテーブルの44行目以降でルールを変更し、Primaryの次の値の前の行にEndを配置する必要があります。どちらが欲しいですか?

Re:他の列からのパターンに基づいて2つの列を生成しようとしていますこんにちはジム、
混乱させて申し訳ありません。
あなたの元の式(私はそれを台無しにしたことはないと思います)はほとんどの場合に機能しましたが、いくつかの間違った点を捉え、完全なデータセットでほとんど見逃していませんでした。 添付されたデータのサブセット(1つの「ID」と1つの「サブセット」の値のみ)には、数式に基づいた列があり、間違った点はほとんどありません。
行:647-649間違ったエントリ(赤い色)
行:868-937はキャプチャされません(赤い色)
行:1307-1311間違ったエントリ(赤い色)
そして、これは、:Occurrenceに条件を設定したときに修正されました。
今私は探しています-
1.1。 発生した最後のプライマリセンサー= n(たとえば、n = 2)、「開始」としてマークします
2.2。 Occurrence = n + 1(= 3)の最初のプライマリセンサー。n= 3のプライマリセンサーがない場合は、Occurrence = n + 2 == 4の値を停止/マークする必要があります。 「終了」としてマークします
3.最後に、「開始」と「終了」の間の数字を新しい列に入力します。
別の考え方(かもしれません)-
-任意の1回の出現でn(n = 2)最初のプライマリセンサーをENDとしてマークし、最後のプライマリセンサーを開始としてマークしてから、新しい列に開始と終了の間の値を入力できる場合。
これがお役に立てば幸いです。
ありがとう、
私が見つけることができれば、これは可能だと思います
Re:他の列からのパターンに基づいて2つの列を生成しようとしていますこの問題は、JSL変数「other」に適用されているロジックにあるようです。今日はこの問題に取り組む時間がありませんが、明日の午後、調査ができるはずです。