期間に基づいて、他の 2 つの発生の間の発生をカウントします。🙋:女性のサイン:こんにちは!
「サブタイプ」列内で、単語「REM」が 2 回出現するまでに「Stadium N2」が出現する回数を数える必要があります。ただし、2 回目の REM 出現の「開始」列の時間が 15 分以内である場合に限ります。最初の REM 発生の列「終了」の時刻。
スクリーンショットの星を参照してください。この場合、カウントは 3 になります。
そうするための公式は何ですか?
Thx :ハグフェイス: :folded_hands:
自動化とスクリプト作成マックOSRe: 期間に基づいて他の 2 つの発生の間の発生を数えるテストを容易にするためにサンプルデータを提供してもらえますか?
Re: 期間に基づいて他の 2 つの発生の間の発生を数えるはい、どうぞ!
Re: 期間に基づいて他の 2 つの発生の間の発生を数えるもう一つ質問なのですが、累積値でいいですか? では、2 つの REM の間の最初のスタジアム N2 では 1、2 番目は 2 というようになりますか?
Re: 期間に基づいて他の 2 つの発生の間の発生を数えるこれが唯一のオプションではありませんが、データの量に応じて、テーブルに 2 つの列を追加する次のような方法が機能する可能性があります。
Names Default To Here(1);
Current Data Table() << New Column("R", Numeric, Continuous, Formula(
Col Cumulative Sum(If(:SubType == "REM", 1, .))
));
Current Data Table() << New Column("c_n2", Numeric, Continuous, Formula(
If(!IsMissing(:R),
Col Sum(If(:SubType == "Stadium N2", 1, 0), :R);
,
.
);
));
Re: 期間に基づいて他の 2 つの発生の間の発生を数えるご提案ありがとうございます。これは確かに断続的なすべての N2 を REM に識別します:)
ただし、最大 15 分離れた 2 REM の間にあるものだけをカウントする必要があります (ほとんどの REM 終了時間とそれに続く REM 開始時間は 15 分以上離れています)。
この時間フィルターをどのように統合しますか?
Re: 期間に基づいて他の 2 つの発生の間の発生を数えるそのためにはデータをどのように並べるべきでしょうか? たとえばここでは、次の終了の前に最初の REM 終了がありますか?

それとも、データはすでに正しく順序付けされていますか (ここでは形式を日付時刻に変更しただけです)? 日付情報が欠落しているので、日付が変わったことをどのように区別すればよいでしょうか、それともタイムスタンプに基づいて推測する必要がありますか?

編集: データの元の順序を使用し、終了と次の開始のチェックのみを考慮します。
Names Default To Here(1);
dt = Open("$DOWNLOADS/example(1).jmp");
m_sub = dt[0, "SubType"];
rem_rows = Loc(m_sub, "REM");
rem_ends = dt[rem_rows, "Time of Day[End]"];
rem_starts = dt[rem_rows, "Time of Day[Start]"];
Remove From(rem_ends, N Items(rem_starts));
Remove From(rem_starts, 1);
rem_durs = (rem_starts - rem_ends);
new_col = dt << New Column("Counts", Numeric, Continuous);
For Each({rem_dur, idx}, rem_durs,
If(rem_dur < In Minutes(15) & rem_dur >= 0,
row_start = rem_rows[idx];
row_end = rem_rows[idx + 1];
ntwos = Loc(m_sub[row_start::row_end], "Stadium N2");
ntwo_count = N Items(ntwos);
dt[row_start::row_end, "Counts"] = ntwo_count;
);
);
Re: 期間に基づいて他の 2 つの発生の間の発生を数えるありがとう! 確かに、値はすでに Start によって順序付けされています。
小さな追加の質問: 正確性を手動で検証する必要がありますが、他の列:ID、:Validated、:Subtype でグループ化した後にのみこれを行うことができます。
どこにどのようにグループ化すればよいでしょうか?
Re: 期間に基づいて他の 2 つの発生の間の発生を数えるグループ化変数を追加するには、スクリプトにかなりの変更を加える必要があります。 最も簡単なオプションは、各グループの作成サブセットを追加し、それらの計算を実行してから、それらを元のデータ テーブルに結合し直すことです (ある種の一意の識別子列の追加が必要な場合があります)。 他のかなり簡単なオプションは、単一の GROUP 列を作成し、それを使用してさまざまなオプションをループすることですが、インデックスには注意する必要があります。