aislando la diferencia de fecha más pequeñaTengo un conjunto de datos grande que tiene una fecha estática sobre un tema (fecha de la tomografía computarizada de tórax) y necesito encontrar la diferencia de fecha más pequeña y mantener esa fila (eliminar las demás). jmp 16.2.0
Ejemplo a continuación: quiero conservar las filas 2 y 4 (la diferencia de días más pequeña para los sujetos 1 y 2).
ID del sujeto. Fecha CT. fecha de función pulmonar. diferencia de dias
1 30/8/18 29/01/18 -213
1 30/8/18 31/8/18 1
1 30/8/18 4/3/19 186
2 19/12/17 13/11/18 329
2 19/12/17 3/9/19 623
2 19/12/17 4/10/21 1385
Organización de contenidosRe: aislar la diferencia de fecha más pequeñaHola @jsolo01 ,
¿Qué tal agregar una nueva columna de fórmula "Col Rank" para clasificar la diferencia de días según el ID del sujeto?
Luego, puede seleccionar la fila "Col Rank" que no sea igual a 0 y eliminar las filas.
Para;
subj ID 1, la diferencia mínima de días es la segunda fila.
subj ID 2, la diferencia mínima de días es la cuarta fila
1) Crear una nueva columna de fórmula: Col Rank


2) Vaya a Filas > Selección de fila > Seleccionar dónde

3) Defina la condición: Col Ran no es igual a 1 > haga clic en "Agregar condición"


4) Haga clic derecho en las filas seleccionadas> Eliminar filas

5) Resultado final como se muestra a continuación.

Espero eso ayude.
Si es un análisis repetitivo, puedes automatizar los pasos mediante flujo de trabajo o JSL.
Re: aislar la diferencia de fecha más pequeñaEsta es mi opinión sobre una manera sencilla de obtener lo que estás pidiendo; Sólo un guión simple
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: aislar la diferencia de fecha más pequeñaSólo para ampliar un poco la solución interactiva @WebDesignesCrow :
Si aún no tiene la columna de diferencias, puede crearla de forma interactiva (seleccione ambas fechas, haga clic derecho en el encabezado de la columna y busque Diferencia (orden inverso). Esto creará una nueva columna donde las diferencias están en segundos. Si desea verlos en el suyo/días, puede hacer doble clic en la columna creada y modificarla según sea necesario (como agregar división por En días(1)), pero los segundos funcionan para este caso.

Luego haga clic derecho en el encabezado de esta nueva columna y cree una columna de valor absoluto.

Después de tener esa columna, haga clic derecho en la columna de ID de asunto y conviértala en columna de agrupación.

a continuación, puede hacer clic derecho en la columna de diferencia de fecha y crear una fórmula de clasificación (tenga en cuenta la agrupación)

desde la última columna, haga clic derecho en uno de los "unos", seleccione las celdas coincidentes

Desde aquí puede crear un subconjunto utilizando filas seleccionadas

O haga clic derecho en la lista de filas, invierta la selección y, después de la inversión, elimine las filas



Luego, si necesita repetir esto, puede crear un flujo de trabajo o capturar el script desde el registro mejorado.
A continuación se muestra el script creado por el generador de flujo de trabajo. Lo único que falta es abrir la tabla, ya que no la tengo guardada (y algunos nombres de columnas son incorrectos por el mismo motivo), así que agregué un script de creación de tablas (el flujo de trabajo también se adjunta).
Ver más...
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));