그래서, 모든 진료소 방문 날짜에 행이 있습니다. 현재 모든 클리닉 방문 날짜는 "DateSeen"아래의 동일한 열에 기록됩니다. 대신 모든 환자 ID에 대해 단일 행이 필요하며 각 방문에 대해 별도의 열을 작성해야합니다 (시간순으로). 예를 들어 "첫 번째 방문, 두 번째 방문, 세 번째 방문"등 다섯 번째 방문.
누군가 도울 수 있습니까? 분명한 이유로, 실제 데이터를 공유 할 수는 없지만 일부 더미 데이터가 있습니다.
| 신분증 | DateSeen |
| 8 | 2015 년 3 월 3 일 |
| 8 | 2014 년 6 월 20 일 |
| 1 | 2013 년 12 월 3 일 |
| 10 | 2/28/2012 |
| 9 | 2014 년 9 월 13 일 |
| 9 | 2014 8/23 |
| 6 | 2008 년 7 월 10 일 |
| 삼 | 2014 년 1 월 1 일 |
| 2 | 6/15/2011 |
| 5 | 2011 년 4 월 1 일 |
| 1 | 2014 년 2 월 26 일 |
| 삼 | 4/30/2016 |
| 1 | 2015 년 8 월 6 일 |
| 9 | 5/9/2009 |
| 4 | 2011 년 10 월 1 일 |
| 2 | 2011-07-23 |
| 8 | 2013 년 10 월 5 일 |
| 8 | 1/10/2009 |
| 1 | 2014 년 8 월 11 일 |
| 9 | 2014 년 6 월 6 일 |
| 7 | 2014 년 9 월 20 일 |
| 삼 | 2015 년 11 월 21 일 |
| 2 | 2013 년 3 월 1 일 |
| 9 | 2010 년 1 월 8 일 |
| 6 | 2015 년 8 월 1 일 |
| 삼 | 2014 년 8 월 6 일 |
| 삼 | 2013 년 11 월 9 일 |
| 4 | 8/27/2011 |
| 1 | 2014 년 7 월 11 일 |
| 10 | 10/31/2009 |
| 2 | 2015 년 4 월 1 일 |
| 2 | 8/11/2007 |
| 5 | 2014 년 7 월 18 일 |
| 9 | 10/15/2013 |
나는 혼란을 일으켰습니다. 포함 된 스크립트에는 첫 번째 문에 포함 된 데이터 테이블을 만드는 단계가 포함되었습니다. 내 코드의 일부는 샘플 데이터로 실행할 수있는 것으로 대답 한 것입니다. 실제로 작업을 수행하는 스크립트 부분은 무제한의 환자 수로 실행될 수 있습니다. 따라서 큰 데이터 테이블을 만들고 내가 만든 스크립트의 마지막 부분을 실행하기 만하면됩니다. 환자 ID 열의 이름이 "ID"이고 날짜 열의 이름이 "Date / Seen"인지 확인하십시오. 또한 "Date / Seen"열은 숫자 JMP Date 열이어야합니다.
// Sort the table so that all visits for a given individual are together
// and in asscending order of the visit date
dt << Sort( By( :ID, :Name( "Date/Seen" ) ), Order( Ascending, Ascending ), Replace table( 1 ) );
// Create a new column which is just a simple counter of the visit number
dt << New Column( "Visit Number",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Lag( :ID ) != :ID,
num = 1,
num = num + 1
);
num;
)
);
// Split the data by the visit number
dt << Split(
Split By( :Visit Number ),
Split( :Name( "Date/Seen" ) ),
Group( :ID ),
Sort by Column Property
);
당신 정말 대단하네요!! 정말 고맙습니다! 이것은 나를 압박했다! 다음 비행에서 1 등석으로 무료 업그레이드 해 주시기 바랍니다. 
여기 당신이 원하는 것을하는 간단한 스크립트가 있습니다. 스크립트의 단계를 수행하면이 3 가지 작업을 대화 형으로 수행하기가 쉽습니다.
Names default to here( 1 );
// Input the original data table
dt = New Table( "Patient Visits",
Add Rows( 34 ),
New Column( "ID",
Character,
"Nominal",
Set Values(
{"8", "8", "1", "10", "9", "9", "6", "3", "2", "5", "1", "3", "1", "9", "4", "2", "8", "8", "1",
"9", "7", "3", "2", "9", "6", "3", "3", "4", "1", "10", "2", "2", "5", "9"}
)
),
New Column( "Date/Seen",
Numeric,
"Nominal",
Format( "m/d/y", 12 ),
Input Format( "mmddyyyy" ),
Set Selected,
Set Values(
[3545078400, 3517603200, 3468873600, 3413232000, 3461875200, 3491596800, 3298492800, 3471379200,
3390940800, 3384460800, 3476217600, 3544819200, 3521664000, 3324672000, 3400272000, 3394224000,
3463776000, 3314390400, 3553718400, 3516393600, 3494016000, 3530908800, 3476476800, 3345753600,
3521232000, 3553286400, 3466800000, 3397248000, 3487881600, 3339792000, 3510691200, 3269635200,
3488486400, 3464640000]
)
)
);
// Sort the table so that all visits for a given individual are together
// and in asscending order of the visit date
dt << Sort( By( :ID, :Name( "Date/Seen" ) ), Order( Ascending, Ascending ), Replace table( 1 ) );
// Create a new column which is just a simple counter of the visit number
dt << New Column( "Visit Number",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Lag( :ID ) != :ID,
num = 1,
num = num + 1
);
num;
)
);
// Split the data by the visit number
dt << Split(
Split By( :Visit Number ),
Split( :Name( "Date/Seen" ) ),
Group( :ID ),
Sort by Column Property
);