가장 작은 날짜 차이를 분리나는 대상에 대한 고정 날짜(흉부 CT 스캔 날짜)가 있는 대규모 데이터 세트를 가지고 있으며 가장 작은 날짜 차이를 찾아 해당 행을 유지해야 합니다(다른 행은 삭제). jmp 16.2.0
아래 예 - 행 2와 4(주제 1과 2의 가장 작은 날짜 차이)를 유지하고 싶습니다.
제목 ID. CT 날짜. 폐 기능 날짜. 일차
1 8/30/18 1/29/18 -213
1 8/30/18 8/31/18 1
1 2018년 8월 30일 19년 3월 4일 186
2 17/12/19 18/11/13 329
2 17/12/19 19/9/3 623
2 12/19/17 10/4/21 1385
콘텐츠 구성Re: 가장 작은 날짜 차이를 분리합니다.안녕하세요 @jsolo01 님 ,
제목 ID에 따라 날짜 차이의 순위를 매기는 새로운 수식 열 "Col Rank"를 추가하는 것은 어떻습니까?
그런 다음 0이 아닌 행 "Col Rank"를 선택하고 행을 삭제할 수 있습니다.
을 위한;
subj ID 1, 최소 일 차이는 두 번째 행입니다.
subj ID 2, 최소 날짜 차이는 4번째 행입니다.
1) 새 수식 열 만들기: Col Rank


2) 행 > 행 선택 > 위치 선택으로 이동합니다.

3) 조건 정의: Col 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 열을 마우스 오른쪽 버튼으로 클릭하고 그룹화 열로 만듭니다.

다음으로 날짜 차이 열을 마우스 오른쪽 버튼으로 클릭하고 순위 공식을 생성할 수 있습니다(그룹화 참고).

마지막 열에서 "하나" 중 하나를 마우스 오른쪽 버튼으로 클릭하고 일치하는 셀을 선택합니다.

여기에서 선택한 행을 사용하여 하위 집합을 만들 수 있습니다.

또는 행 목록을 마우스 오른쪽 버튼으로 클릭하고 선택을 반전시킨 후 반전 후 행을 삭제합니다.



그런 다음 이를 반복해야 하는 경우 워크플로를 만들거나 향상된 로그에서 스크립트를 캡처할 수 있습니다.
아래는 Workflow Builder에서 생성한 스크립트입니다. 누락된 점은 테이블을 저장하지 않았기 때문에 테이블을 여는 것입니다(그리고 같은 이유로 일부 열 이름이 올바르지 않음). 그래서 테이블 생성 스크립트를 추가했습니다(워크플로도 첨부되어 있습니다).
더보기...
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));