Comment éliminer la première ligne en double ?Chère communauté, j'ai une question et c'est comment éliminer les lignes avec le premier doublon.
Exemple
| N° | Date | Compter |
| 4567 | 2017-01-21 | 1 |
| 5555 | 2017-02-03 | 1 |
| 5555 | 2017-02-10 | 2 |
| 8745 | 2015-03-10 | 1 |
| 8345 | 2016-05-01 | 1 |
| 9563 | 2016-01-02 | 1 |
| 9563 | 2016-01-10 | 2 |
Existe-t-il un script comment, dans cet exemple, trouver les doublons que j'ai marqués ici avec du texte en gras et soit éliminer ces lignes directement, soit créer une colonne supplémentaire où il pourrait être indiqué par exemple Keep et Eliminate ?
J'utilise JMP Pro 14.0.0 (64 bits)
Cordialement
Lars Enochsson, MD, doctorat
Professeur de Chirurgie
Département des sciences chirurgicales et périopératoires
Université d'Umeå
Responsable du registre suédois de la chirurgie des calculs biliaires et de la CPRE, GallRiks
Secrétaire scientifique de la Société Suédoise de Chirurgie
E-mail: lars.enochsson@umu.se
Re : Comment supprimer la première ligne en double ?@SP ,
Vos années d'expérience et de connaissances avec JMP sont évidentes dans vos réponses à la discussion de la communauté.J'apprécie vraiment votre implication dans la communauté.
Jim
Re : Comment supprimer la première ligne en double ?En fait, j'ai rencontré JMP pour la première fois en 1994 à l'université d'Uppsala, en Suède, et je l'utilise depuis. Même si JMP n'est pas encore très couramment utilisé dans le milieu universitaire suédois, j'ai "converti" pas mal d'utilisateurs de SPSS en cours de route.
D'accord, cette communauté est géniale.
Re : Comment supprimer la première ligne en double ?Eh bien, j'apprécie les "Merci". Je me sens encore mieux à l'idée de te répondre, maintenant que je sais que tu es un compatriote scandinave. Mon arrière-grand-père, Nels Knutson, a immigré en Amérique depuis Bergan, en Norvège.Re : Comment supprimer la première ligne en double ?Merci pour la réponse rapide. Ce script a vraiment fait l'affaire. Il n'y a pas beaucoup de personnes en Suède qui utilisent JMP, du moins pas dans le monde universitaire. Ils utilisent généralement SPSS ou Stata. Cependant, avec cette communauté active, il n'y a aucune raison de changer. Même notre statisticien ici à l'Université d'Umeå est impressionné./LarsRe : Comment supprimer la première ligne en double ?Ce script devrait également fonctionner :
// Delete all multiplicate rows except the one with the latest date (sorting does not matter).
dt = Current Data Table();
dt << Select Where(Col Max(:Date, :Nr) > :Date);
dt << Delete rows;
Modifier : si les doublons peuvent avoir la même date, cela fonctionne mieux, mais le tri par date est requis.
dt << Select Where(Col Max(Row(), :Nr) > Row());
dt << Delete Rows;
Re : Comment supprimer la première ligne en double ?Voici un script qui fera le travail :
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 7 ),
New Script(
"Source",
Data Table( "Transpose of Untitled 17" ) <<
Subset( All rows, Selected columns only( 0 ) )
),
New Column( "Nr",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4567, 5555, 5555, 8745, 8345, 9563, 9563] )
),
New Column( "Date",
Numeric,
"Continuous",
Format( "yyyy-mm-dd", 12 ),
Input Format( "yyyy-mm-dd" ),
Set Values(
[3567801600, 3568924800, 3569529600, 3508790400, 3544905600, 3534537600,
3535228800]
)
),
New Column( "Count",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 1, 2, 1, 1, 1, 2] )
)
);
dt << select duplicate rows( Match( :Nr ) );
wait(5);
dt2 = dt << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
dt << delete rows;
Wait(5);
dt = dt << Update( With( dt2 ), Match Columns( :Nr = :Nr ) );
Close( dt2, nosave );
Re : Comment supprimer la première ligne en double ?Salut Lars,
Les doublons seront-ils toujours classés de manière séquentielle ou pourrait-il y avoir des enregistrements entre les deux ?S'ils sont toujours séquentiels comme dans votre exemple, vous pourriez faire quelque chose comme ceci :
dt = Current Data Table();
del_rows = {}; //initiate list to contain list of rows that are duplicates
for(i = 1, i<=N Row(dt), i++,
if(:Nr[i] == :Nr[i+1], insert into(del_rows,i)) //if Nr for current row is same as next, then put current row in del_rows
);
dt << Delete Rows(del_rows); //delete all rows in del_rows