Ich habe also Zeilen für jeden Klinikbesuchstermin. Derzeit werden alle Termine für den Klinikbesuch in derselben Spalte unter "DateSeen" aufgeführt. Stattdessen brauche ich für jede Patienten-ID eine einzige Zeile und ich muss für jeden Besuch eine eigene Spalte erstellen (chronologisch). Zum Beispiel "erster Besuch, zweiter Besuch, dritter Besuch" usw. bis zum fünften Besuch.
Kann jemand helfen? Aus offensichtlichen Gründen kann ich die tatsächlichen Daten nicht freigeben, hier sind jedoch einige Dummy-Daten.
| ICH WÜRDE | DateSeen |
| 8 | 03.05.2016 |
| 8 | 20.06.2015 |
| 1 | 03.12.2013 |
| 10 | 28.02.2012 |
| 9 | 13.09.2013 |
| 9 | 23.08.2014 |
| 6 | 10.07.2008 |
| 3 | 1/1/2014 |
| 2 | 15.06.2011 |
| 5 | 01.04.2011 |
| 1 | 26.02.2014 |
| 3 | 30.04.2016 |
| 1 | 8/6/2015 |
| 9 | 09.05.2009 |
| 4 | 01.10.2011 |
| 2 | 23.07.2011 |
| 8 | 05.10.2013 |
| 8 | 10.01.2009 |
| 1 | 8/11/2016 |
| 9 | 6/6/2015 |
| 7 | 20.09.2014 |
| 3 | 21.11.2015 |
| 2 | 01.03.2014 |
| 9 | 1/8/2010 |
| 6 | 01.08.2015 |
| 3 | 8/6/2016 |
| 3 | 09.11.2013 |
| 4 | 27.08.2011 |
| 1 | 7/11/2014 |
| 10 | 31.10.2009 |
| 2 | 01.04.2015 |
| 2 | 8/11/2007 |
| 5 | 18.07.2014 |
| 9 | 15.10.2013 |
Anscheinend verursachte ich etwas Verwirrung. In das von mir eingeschlossene Skript hatte ich einen Schritt eingefügt, der die Datentabelle erstellt, die Sie in Ihre erste Anweisung aufgenommen hatten. Dieser Teil meines Codes diente dazu, das, was ich beantwortete, mit einigen Beispieldaten auszuführen. Der Teil des Skripts, der die Arbeit tatsächlich ausführt, kann mit einer unbegrenzten Anzahl von Patienten ausgeführt werden. Sie müssen also nur die große Datentabelle erstellen und den letzten Teil des von mir erstellten Skripts ausführen. Stellen Sie einfach sicher, dass die Spalte mit der Patienten-ID "ID" und die Datums-Spalte "Datum / gesehen" heißt. Außerdem muss die Spalte "Datum / gesehen" eine numerische JMP-Datumsspalte sein.
// 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
);
Du bist unglaublich !! Ich danke dir sehr! Das hat mich gestresst! Ich hoffe, Sie erhalten bei Ihrem nächsten Flug ein kostenloses Upgrade in die erste Klasse. 
Hier ist ein einfaches Skript, das macht, was Sie wollen. Wenn Sie die Schritte im Skript befolgen, können Sie diese 3 Vorgänge einfach interaktiv ausführen
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
);