Questa non è una semplice rimozione di duplicati - Voglio rimuovere le righe duplicate in base al loro valore corrispondente in 2 colonne - in 1 colonna, ci sono gli ID di clinica unici, nell'altro sono l'anno di diagnosi di una malattia. Voglio applicare la conduttività che si duplica per un unico ID di clinica (cioè paziente) dovrebbe essere rimosso se gli anni di diagnosi corrispondenti sono entro un anno l'uno dall'altro. qualsiasi disposizione per una cosa del genere in jmp? ad esempio, una diagnosi nel 2015 e 2016 dovrebbe essere considerata come una, e l'anno 2015 dovrebbe essere mantenuto. Ho provato le opzioni di join e di riepilogo senza successo. qualche idea?
grazie mille per la tua risposta Sono un principiante in JMP e non sono sicuro di come eseguire lo script. potresti dirmi dove sostituire i nomi di tabelle e colonne in questo script? ad es. nome del tavolo- Preg, nomi di Coulmn- Numero di clinica, Anno.
Apprezzo l'aiuto!
Ecco un'altra variante della stessa idea. Identificherà i duplicati secondo le tue regole. Per il 2015 e il 2016, il 2015 sarà mantenuto; per il 2014, 2015, 2017, 2018, 2015 e 2017 verranno mantenute, ma attenzione che se ci sono più di due anni consecutivi, ad esempio 2015, 2016, 2017, verrà mantenuto solo il 2015.
// Example table
dt = New Table("test",
Add Rows(13),
New Column("Clinic", "Character", Set Values({"A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "E", "E", "E"})),
New Column("Year", Set Values([2016, 2017, 2015, 2016, 2015, 2016, 2015, 2018, 2010, 2011, 2016, 2017, 2018]))
);
// Select multiples based on criteria: same clinic and same or adjacent year
dt << sort(Replace Table, By(:Clinic, :Year));
dt << select where(Col Min(Row(), :Clinic, If(Row() == 1, 0, Dif(:Year)) <= 1) < Row());
// dt << delete rows;
Ecco una piccola sceneggiatura che credo troverà i duplicati. Si presuppone che la colonna della data abbia un valore di data JMP al suo interno. I nomi delle colonne utilizzate nello script, dovranno essere modificati nello script, in modo che corrispondano ai nomi effettivi nella tabella dei dati.
Names Default To Here( 1 );
dt = Current Data Table();
delList = {};
For( i = 1, i <= N Rows( dt ), i++,
curID = dt:id[i];
curRows = dt << get rows where( :id == curID );
minIDdate = Min( :date[curRows] );
curDateList = As List( :date[curRows] );
minIDRow = (curRows)[Loc( curDateList, minIDdate )];
If( i != minIDRow,
If( :date[i] <= minIDdate + In Years( 1 ),
Insert Into( delList, i )
)
);
);
// dt << delete rows( delList );
// or
dt << New Column( "Duplicate", character );
dt:Duplicate[delList] = "Duplicate";