J'ai donc des rangées pour chaque date de visite à la clinique. À l'heure actuelle, toutes les dates de visites à la clinique sont enregistrées dans la même colonne sous "DateSeen". Au lieu de cela, j'ai besoin d'une seule ligne pour chaque ID de patient et je dois créer une colonne distincte pour chaque visite (chronologique). Par exemple, "première visite, deuxième visite, troisième visite", etc. jusqu'à la cinquième visite.
Quelqu'un peut aider? Pour des raisons évidentes, je ne peux pas partager les données réelles, mais voici quelques données factices.
| ID | DateSeen |
| 8 | 5/3/2016 |
| 8 | 20/06/2015 |
| 1 | 12/3/2013 |
| dix | 28/02/2012 |
| 9 | 13/09/2013 |
| 9 | 23/08/2014 |
| 6 | 7/10/2008 |
| 3 | 1/1/2014 |
| 2 | 15/06/2011 |
| 5 | 4/1/2011 |
| 1 | 26/02/2014 |
| 3 | 30/04/2016 |
| 1 | 8/6/2015 |
| 9 | 5/9/2009 |
| 4 | 01/10/2011 |
| 2 | 23/07/2011 |
| 8 | 10/5/2013 |
| 8 | 1/10/2009 |
| 1 | 8/11/2016 |
| 9 | 06/06/2015 |
| 7 | 9/20/2014 |
| 3 | 21/11/2015 |
| 2 | 3/1/2014 |
| 9 | 1/8/2010 |
| 6 | 01/08/2015 |
| 3 | 8/6/2016 |
| 3 | 11/9/2013 |
| 4 | 8/27/2011 |
| 1 | 7/11/2014 |
| dix | 31/10/2009 |
| 2 | 4/1/2015 |
| 2 | 8/11/2007 |
| 5 | 7/18/2014 |
| 9 | 15/10/2013 |
Apparemment j'ai causé un peu de confusion. Dans le script que j'ai inclus, j'avais inclus une étape qui crée la table de données que vous aviez incluse dans votre première instruction. Cette partie de mon code était simplement destinée à rendre ce que je répondais capable de fonctionner avec des exemples de données. La partie du script qui fait le travail peut être exécutée avec un nombre illimité de patients. Il vous suffit donc de créer la grande table de données et d'exécuter la dernière partie du script que j'ai créé. Assurez-vous simplement que la colonne d'identification du patient s'appelle "ID" et que la colonne de date s'appelle "Date / Vu". De plus, la colonne "Date / Vu" doit être une colonne Date numérique JMP.
// 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
);
Tu es incroyable!! Merci beaucoup! C'était stressant moi! J'espère que vous obtiendrez un surclassement gratuit en première classe sur votre prochain vol. 
Voici un script simple qui fait ce que vous voulez. Si vous suivez les étapes du script, ces 3 opérations sont faciles à effectuer de manière interactive.
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
);