最小の日付差を分離する被験者の静的な日付 (胸部 CT スキャンの日付) を含む大規模なデータセットがあり、最小の日付差を見つけてその行を保持する必要があります (他の行は削除します)。jmp 16.2.0
以下の例 - 行 2 と 4 (被験者 1 と 2 の最小の日差) を保持します。
件名ID。CT撮影日。肺機能検査日。日差
1 2018年8月30日 2018年1月29日 -213
1 2018年8月30日 2018年8月31日 1
1 2018年8月30日 2019年3月4日 186
2 12/19/17 11/13/18 329
2 12/19/17 9/3/19 623
2 12/19/17 10/4/21 1385
コンテンツの編成Re: 最小の日付差の分離こんにちは@jsolo01 、
新しい数式列「Col Rank」を追加して、件名 ID に従って日差をランク付けするのはどうでしょうか。
次に、0 と等しくない行「Col Rank」を選択して行を削除します。
のために;
件名 ID 1、最小日差は 2 行目です。
件名ID 2、最小日差は4行目です
1) 新しい数式列を作成する: Col Rank


2) 行 > 行の選択 > 選択場所に移動します

3) 条件を定義します: 列 Ran が 1 と等しくない > 「条件の追加」をクリックします


4) 選択した行を右クリック > 行を削除

5) 最終結果は以下の通り

それが役に立てば幸い。
繰り返しの分析の場合は、ワークフローまたはJSLを使用して手順を自動化できます。
Re: 最小の日付差の分離あなたが求めているものを得るための簡単な方法をここに示します。単純なスクリプトです。
Names Default To Here( 1 );
dt = Current Data Table();
dt << select where( :day difference == Col Min( :day difference, :subject ID ) );
dt << subset( selected columns( 0 ), selected rows( 1 ) );
Re: 最小の日付差の分離@WebDesignesCrowのインタラクティブ ソリューションを少し拡張します。
差異列がまだない場合は、対話的に作成できます(両方の日付を選択し、列ヘッダーを右クリックして差異(逆順)を見つけます)。これにより、差異が秒単位で表示される新しい列が作成されます。差異を自分の日数で表示したい場合は、作成された列をダブルクリックし、必要に応じて変更できます(In Days(1)による除算を追加するなど)。ただし、この場合は秒単位でも機能します。

次に、この新しい列のヘッダーを右クリックして、絶対値列を作成します。

その列を作成したら、subjectid列を右クリックしてグループ化列にします。

次に、日付差の列を右クリックして、ランク式を作成します(グループ化に注意してください)

最後の列から、「1」の1つを右クリックし、一致するセルを選択します。

ここから、選択した行を使用してサブセットを作成するか、

または行リストを右クリックして選択を反転し、反転後に行を削除します



これを繰り返す必要がある場合は、ワークフローを作成するか、拡張ログからスクリプトをキャプチャします。
以下は、ワークフロー ビルダーによって作成されたスクリプトです。テーブルを保存していないためテーブルを開く機能だけが欠けています (同じ理由で一部の列名が正しくありません)。そのため、テーブル作成スクリプトを追加しました (ワークフローも添付されています)。
もっと見る...
Names Default To Here(1);
//Custom Action - Create table 'Untitled 2'
dt = New Table("Untitled 2",
Add Rows(6),
Compress File When Saved(1),
New Column("subj", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1, 2, 2, 2])),
New Column("day1",
Numeric,
"Continuous",
Format("m/d/y", 12),
Input Format("m/d/y"),
Set Values([3618432000, 3618432000, 3618432000, 3596486400, 3596486400, 3596486400])
),
New Column("day2",
Numeric,
"Continuous",
Format("m/d/y", 12),
Input Format("m/d/y"),
Set Values([3600028800, 3618518400, 3634502400, 3624912000, 3650313600, 3716150400])
)
);;
//New formula column: day2-day1
Data Table("Untitled 2") << New Formula Column(
Operation(Category("Combine"), "Difference (reverse order)"),
Columns(:day1, :day2)
);
//New formula column: Abs[day2-day1]
Data Table("Untitled 2") << New Formula Column(
Operation(Category("Transform"), "Absolute Value"),
Columns(:"day2-day1"n)
);
//New formula column: Rank[Abs[day2-day1]][subj]
Data Table("Untitled 2") << New Formula Column(
Operation(Category("Distributional"), "Rank"),
Columns(:"Abs[day2-day1]"n),
Group By(:subj)
);
//Select matching cells
Data Table("Untitled 2") << Select Where(:"Rank[Abs[day2-day1]][subj]"n == 1);
//Subset data table
Data Table("Untitled 2") << Select Where(:"Rank[Abs[day2-day1]][subj]"n == 1) <<
Subset(Selected Rows(1), Selected columns only(0));