Dies ist keine einfache Entfernung von Duplikaten - ich möchte doppelte Zeilen durch ihren in 2 Spalten übereinstimmenden Wert entfernen - in 1 Spalte gibt es die eindeutigen Klinik-IDs, in dem anderen sind das Diagnosejahr einer Krankheit. Ich möchte die Bedingung anwenden, dass Duplikate für eine eindeutige Klinik-ID (z. B. Patient) entfernt werden sollten, wenn die entsprechenden Diagnosejahre innerhalb eines Jahres liegen. irgendeine Vorkehrung für so etwas in jmp? Beispielsweise sollte eine Diagnose in den Jahren 2015 und 2016 als eine betrachtet werden und das Jahr 2015 sollte beibehalten werden. Ich habe die Join- und Summary-Optionen ohne Erfolg ausprobiert. irgendwelche Ideen?
Vielen Dank für Ihre Antwort. Ich bin ein Anfänger bei JMP und bin mir nicht sicher, wie das Skript ausgeführt wird. Könnten Sie mir sagen, wo Sie die Tabellen- und Spaltennamen in diesem Skript einsetzen sollen? zB Tabellenname- Preg, Coulmn-Namen- Kliniknummer, Jahr.
Ich schätze die hilfe!
Hier ist eine weitere Variante derselben Idee. Duplikate werden nach Ihren Regeln identifiziert. Für 2015 und 2016 wird 2015 beibehalten; Für 2014, 2015, 2017, 2018, 2015 und 2017 wird beibehalten. Beachten Sie jedoch, dass bei mehr als zwei aufeinander folgenden Jahren (z. B. 2015, 2016, 2017) nur 2015 beibehalten wird.
// 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;
Hier ist ein kleines Skript, von dem ich glaube, dass es die Duplikate finden wird. Es wird davon ausgegangen, dass die Datumsspalte einen JMP-Datumswert enthält. Die Namen der im Skript verwendeten Spalten müssen im Skript geändert werden, um mit den tatsächlichen Namen in Ihrer Datentabelle übereinzustimmen.
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";