isoler la plus petite différence de dateJ'ai un grand ensemble de données qui a une date statique sur un sujet (date du scanner thoracique) et je dois trouver la plus petite différence de date et conserver cette ligne (supprimer les autres). jmp16.2.0
Exemple ci-dessous - je souhaite conserver les lignes 2 et 4 (la plus petite différence de jour pour les sujets 1 et 2).
ID du sujet. Date CT. date de la fonction pulmonaire. différence de jour
30/01/18 29/01/18 -213
1 30/8/18 31/8/18 1
30/01/18 04/03/19 186
2 19/12/17 13/11/18 329
2 19/12/17 3/9/19 623
2 19/12/17 04/10/21 1385
Organisation du contenuRe : isoler la plus petite différence de dateSalut @jsolo01 ,
Que diriez-vous d'ajouter une nouvelle colonne de formule « Col Rank » pour classer la différence de jour en fonction de l'ID du sujet ?
Ensuite, vous pouvez sélectionner la ligne "Col Rank" non égale à 0 et supprimer les lignes.
Pour;
subj ID 1, la différence minimale de jour est la 2ème ligne.
subj ID 2, la différence minimale de jour est la 4ème ligne
1) Créer une nouvelle colonne de formule : Col Rank


2) Accédez à Lignes > Sélection de lignes > Sélectionnez Où

3) Définissez la condition : Col Ran n'est pas égal à 1 > cliquez sur "Ajouter une condition"


4) Cliquez avec le bouton droit sur les lignes sélectionnées > Supprimer les lignes

5) Résultat final comme ci-dessous

J'espère que cela aide.
S'il s'agit d'une analyse répétitive, vous pouvez automatiser les étapes via workflow ou JSL
Re : isoler la plus petite différence de dateVoici mon point de vue sur un moyen simple d’obtenir ce que vous demandez ; Juste un simple script
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 : isoler la plus petite différence de dateJuste pour étendre un peu la solution interactive @WebDesignesCrow :
Si vous n'avez pas déjà la colonne de différence, vous pouvez la créer de manière interactive (sélectionnez vos deux dates, faites un clic droit sur l'en-tête de la colonne et recherchez Différence (ordre inverse). Cela créera une nouvelle colonne où les différences sont en secondes. Si vous souhaitez les voir en jours, vous pouvez double-cliquer sur la colonne créée et la modifier si nécessaire (par exemple, ajouter une division par En jours (1)), mais les secondes fonctionnent dans ce cas.

Ensuite, faites un clic droit sur l'en-tête de cette nouvelle colonne et créez-en une colonne de valeur absolue

Une fois que vous avez cette colonne, faites un clic droit sur la colonne subjectid et faites-en une colonne de regroupement

Ensuite, vous pouvez faire un clic droit sur la colonne de différence de date et créer une formule de classement (notez le regroupement)

dans la dernière colonne, faites un clic droit sur l'un des "uns", sélectionnez les cellules correspondantes

À partir de là, vous pouvez soit créer un sous-ensemble en utilisant les lignes sélectionnées

OU faites un clic droit sur la liste des lignes, inversez la sélection et après inversion supprimez les lignes



Ensuite, si vous devez répéter cette opération, vous pouvez soit créer un flux de travail, soit capturer le script à partir du journal amélioré.
Vous trouverez ci-dessous le script créé par Workflow Builder. La seule chose qui manque est d'ouvrir la table car je n'ai pas la table enregistrée (et certains noms de colonnes sont incorrects pour la même raison), j'ai donc ajouté un script de création de table (le workflow est également joint).
Voir plus...
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));