Esto no es una simple eliminación de duplicados. Quiero eliminar las filas duplicadas por su valor coincidente en 2 columnas. En 1 columna, existen las identificaciones clínicas únicas, en el otro, el año del diagnóstico de una enfermedad. Quiero aplicar la información que los duplicados para una identificación clínica única (es decir, un paciente) deben eliminarse si los años correspondientes del diagnóstico están dentro de un año entre sí. Cualquier provisión para tal cosa en jmp? por ejemplo, un diagnóstico en 2015 y 2016 debe considerarse como uno, y el año 2015 debe mantenerse. He probado las opciones de unión y resumen sin éxito. ¿algunas ideas?
Muchas gracias por su respuesta. Soy un principiante en JMP, y no estoy seguro de cómo ejecutar el script. ¿podría decirme dónde sustituir los nombres de tabla y columna en este script? por ejemplo, nombre de la tabla: Preg, nombres de Coulmn, número de clínica, año.
¡Aprecio la ayuda!
Aquí hay otra variante de la misma idea. Identificará duplicados de acuerdo a sus reglas. Para 2015 y 2016, 2015 se mantendrá; para 2014, 2015, 2017, 2018, 2015 y 2017 se mantendrán, pero tenga en cuenta que si hay más de dos años consecutivos, por ejemplo, 2015, 2016, 2017, solo se conservará 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;
Aquí hay un pequeño script que creo que encontrará los duplicados. Asume que la columna de fecha tiene un valor de fecha JMP en ella. Los nombres de las columnas utilizadas en el script deberán cambiarse en el script para que coincidan con los nombres reales en su tabla de datos.
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";