¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
Soy relativamente nuevo en JMP y todavía estoy explorando ...
Tengo dos archivos jmp en mi carpeta local, que contienen la identificación del paciente del hospital y la información de la fecha de su visita en columnas. Un archivo jmp contiene datos de visitas para pacientes ambulatorios y otro archivo de datos de visitas para pacientes hospitalizados, ambos por un período de 2010 a 2015.
Quiero comparar y unir los dos archivos jmp para que la combinación me brinde un subconjunto de pacientes cuya fecha de visita ambulatoria sea inferior a 14 días a partir de la fecha de visita hospitalaria (Criterios)
Estoy usando JMP 12.0 y el menú "Unir" en Tablas no me permite construir los criterios entre las columnas en las dos tablas.
¿Cómo voy? ¿Tengo que escribir un SQL? Si es así, ¿qué y dónde debo escribir el SQL que pueda comparar las dos tablas jmp y unirlas para obtener la respuesta?
Gracias por cualquier ayuda.
Saludos,
Vinod
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Hola, Ian,
Descubrí que tenía dos columnas en mi tabla de pacientes hospitalizados que probablemente estaban retrasando todo el procesamiento de la secuencia de comandos o simplemente quedaban atascadas y no podían continuar. Una era la Edad, como se puede ver en mi imagen anterior, cuando en cada instancia de procesamiento solía mostrar "evaluar la Edad" y obtener un giro rotatorio. Ahora Age y la otra columna son columnas de fórmula y cuando codifiqué los valores y eliminé la fórmula, el atascamiento desapareció ... ¿Por qué?
Ahora el script podría ejecutar y abrir una tabla PID única de 120k en 3 horas. Esto es con una máquina de procesador central de 64 bit 8gb RAM i7 con solo los procesos de escritorio estándar basados en Windows que se ejecutan y el script fue el único que realizó grandes cargas.
Gracias y Saludos,
Vinod Subramanian
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Sí, entiendo que es probable que sea un problema de rendimiento asociado con los recursos y fuera del alcance. Puede ignorar en ese caso y cerrar este hilo.
Gracias por ayudar a sacar un guión que funciona. Hubiera sido bueno si pudiera usarlo para un resultado exitoso en todo el conjunto de datos grande. Pero decidirá sobre un compromiso ejecutando el script en lotes de datos si nada más funciona.
Solo en un FYI, desde que lo solicitó ... la identificación única del paciente es de aproximadamente 500,000.
Cada vez que comienzo a ejecutar el script en las tablas de datos grandes, se abren y luego veo "Evaluating Age" (en el panel inferior de la ventana del navegador), vea la imagen incrustada ... Se mantiene así con la flecha giratoria como si el procesamiento está en marcha, pero el estado "Evaluating Age" nunca cambia. Tengo una columna de Edad en las tablas, pero ¿por qué se detiene ahí, me gana? Ayer mantuve el script durante 20 horas seguidas y luego lo maté.

Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?En la parte superior del hilo, dije "siempre y cuando no te falten recursos". . .
Creo que millones de filas son ambiciosas. Como también mencioné, el código que escribí no es "lo mejor" en ningún sentido. Aunque puede optimizarse aún más, aún no estoy seguro de que los tamaños de datos que menciona sean viables. Esto no es realmente un comentario sobre JMP en sí, sino más sobre lo que es razonable para cualquier software de escritorio.
Tal vez pueda profundizar un poco más, pero para ayudarme sería bueno saber cuántas ID de pacientes distintas hay en las dos grandes mesas que mencionas. Por la forma en que escribí el código, sé que este sería uno de los factores para determinar su finalización exitosa.
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Hola Ian , Trabajé el script en un conjunto de datos más pequeño, aproximadamente 100 registros de cada tabla y la salida es la esperada. Gracias. He marcado la respuesta correcta en la cadena de arriba.
El desafío al que me enfrento ahora es ejecutar el script en los conjuntos de datos más grandes (2 millones de registros) que tengo.
Además, ¿podría ayudarme en el guión para el escenario 2 que mencioné anteriormente? Gracias. Si quieres que lo registre como otra consulta, puedo hacerlo.
Muchas gracias por ayudar.
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Hola Ian, buenos días.
Comencé a ejecutar el script sobre los archivos que tengo. Las mesas son enormes. Unos 2 millones de filas en pacientes ambulatorios y un millón en pacientes hospitalizados. El script siguió ejecutándose ... Lo mantuve en funcionamiento durante 12 horas y lo maté hace unos minutos.
Primero intentaré ejecutarlo en un conjunto de datos más pequeño y veré cómo responde.
¿Puedes notar algún otro problema en el script? Eliminé algunos de sus códigos, cambié para llamar a las tablas y también cambié el nombre de los nombres de columna que existen en las tablas.
Saludos,
Vinod
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?DE ACUERDO. Suena como si estuvieras cerca entonces. Puede haber otros problemas, pero en su código, las líneas 2 y 3 deben ser:
dti = Tabla de datos ( "ANE_2010-2015" ) ;
dto = Tabla de datos ( "Consolidado-SOC-2011-2015" ) ;
ya que esta es la manera de referirse a una tabla en JSL.
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Buenos días y gracias Ian. Corrí el archivo jsl y la salida funciona bien ...
Intenté modificar el jsl para aplicarlo en las dos tablas jmp que tenía. Parece que estoy haciendo algo mal en la secuencia de comandos, ya que no ocurre nada en la ejecución de la secuencia de comandos, ni recibo ningún mensaje de error. Adjunto el archivo jsl editado para su verificación y orientación.
El script anterior funciona para el escenario 1, para el escenario 2 que mencioné anteriormente donde las tablas jmp para pacientes hospitalizados y ambulatorios se concatenan en una tabla jmp integrada ¿cómo debe cambiar el script? Para distinguir qué filas de datos son pacientes hospitalizados y cuáles son ambulatorios, se introdujo una columna con el indicador "OP" y "IP" en cada fila de datos. La ID de paciente y los datos de visita de las tablas de pacientes hospitalizados y ambulatorios se concatenaron en una columna de ID de paciente y fecha de visita dentro de la tabla jmp integrada.
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Solo para ayudarlo a verlo un poco más fácilmente, escribí un código para implementar la lógica que describo inmediatamente. Guarde el archivo adjunto, ábralo en JMP y haga clic en 'Editar> Ejecutar script'. (Aleatoriamente) hace que las tablas sean "Inpatient" y "Outpatient" (ejemplos de las cuales se adjuntan arriba), pero luego agrega columnas a "Outpatient". No se preocupe por el código, solo mire las dos tablas y vea si eso es lo que está buscando.
(Por cierto, no afirmo que el código sea 'el mejor' en ningún sentido, sobre todo porque, como se ve en el hilo, no estoy seguro de tener los requisitos claros).
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Gracias Ian . Por lo que ha escrito, creo que lo ha entendido bien. Dame 24 horas para volver a usted después de probar los archivos que me envió.
Para su información, desde un contexto empresarial, estoy tratando de encontrar casos de pacientes que acudieron a una consulta ambulatoria dentro de los 14 días posteriores a su visita hospitalaria. En el futuro, solo necesito ajustar la cantidad de días (brecha) para obtener el conjunto de resultados requerido en función de la demanda comercial.
Uno de sus enunciados "Tengo la sensación de que no espera varias coincidencias, por lo que no estoy seguro de que quiera permitir esa posibilidad".
Cada visita ambulatoria o ambulatoria es un caso separado y una fila separada en las tablas ... Es posible que un paciente pueda tener dos citas ambulatorias el mismo día, con la misma o diferentes especialidades. Si eso es lo que quiere decir con múltiples coincidencias, entonces es posible cuando realiza un bucle en cada fecha de visita del paciente del paciente hospitalizado.
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?DE ACUERDO. Confeccioné algunos datos que creo que son similares a los que tienes a mano. Guarde los archivos adjuntos, abra las tablas y ejecute el script guardado en cada uno de ellos para verlos.
Para comprobar mi comprensión, desea recorrer las filas en "Paciente ambulatorio" de la siguiente manera:
1 /. La primera fila es 'ID = 1' y 'Fecha de salida = 20 de enero de 2011 01:28:05 '.
2 /. Busque cualquier fila (s) en 'Paciente hospitalizado' en la que 'ID = 1' y 'Fecha actual' no sea más de 14 días antes del 20 de enero de 2014 01:28:05. Tengo la sensación de que no espera varias coincidencias, por lo que no estoy seguro de si desea permitir esa posibilidad. Pero si hay una coincidencia, desea agregar una nueva columna a "Paciente ambulatorio" que contenga el valor "Fecha actual" en la fila actual (en este caso, la fila 1).
3 /. Mover a la siguiente fila en ' Paciente externo 'y repetir hasta el final de la tabla.
¿Esto es correcto, por favor?
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios? Hola, Ian ,
No había mencionado antes sobre mi fondo no codificante, por lo que le entiendo perfectamente cuando me envió la respuesta. Gracias.
Lo intenté como dijiste .. Aquí están las salidas que obtengo

Una observación que tengo sobre las mesas.
- Cada paciente, tanto dentro como fuera de la mesa, tiene una sola marca de tiempo de visita. y
- Todos los pacientes figuran en ambas tablas (dentro y fuera).
De acuerdo con los detalles del escenario que agregué en la parte superior de su primera respuesta ... tratando de articular a continuación ...
a. Notará en la tabla de escenarios y en la estructura de datos proporcionada, que cada paciente ha visitas múltiples en la tabla 1 (paciente ambulatorio) y el mismo paciente puede tener visitas múltiples o puede que no tenga ni una visita en la tabla 2 (paciente hospitalizado).
segundo. La necesidad de que cada una de las fechas de visita de pacientes hospitalizados sea menor que cualquiera de las fechas de visitas de pacientes ambulatorios para ese paciente. (tenga en cuenta que cada fecha de visita de un paciente debe ser comparada con cada una de las fechas de visita de un paciente externo)
do. Para las filas de pacientes ambulatorios que cumplen con el criterio b, aplique los criterios que La fecha de visita del paciente hospitalizado es <= 14 días de la fecha de la visita ambulatoria del mismo paciente. (Puede haber indicado erróneamente lo contrario anteriormente. Lo siento)
re. Siempre que se cumpla el criterio c, la fila en Mesa ambulatoria contra ese paciente hay que marcarlo como 1 (sí)
mi. Una nueva columna debe ser añadida en el Mesa ambulatoria después de que el criterio cumplió con la columna de la bandera para capturar la fecha de la visita del paciente hospitalizado (contra la cual se cumplió el criterio)
F. Si no hay una fila de pacientes ambulatorios que cumpla con alguno de los criterios de fecha de visita de pacientes hospitalizados byc, marque 0 en la tabla de pacientes ambulatorios.
Espero que sea suficientemente claro.
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Lo siento. A menudo usamos el código como una forma rápida de responder a las preguntas, pero para ser claros, ciertamente no es necesario que lo use para trabajar con JMP.
Para ver si estoy en el camino correcto, sin embargo, seleccione el código de arriba y cópielo (en su portapapeles). Luego haga 'Nuevo> Nuevo script' y péguelo en la ventana resultante. Luego haga 'Editar> Ejecutar script'. Después de un breve retraso, esto debería hacer tres tablas, llamadas 'In', 'Out' y 'In and Out Dates'. Puede obtener el tercero utilizando 'Tablas> Unirse' en los dos primeros y uniéndolos por columnas coincidentes. Si necesita más ayuda sobre cómo hacer esto, vea: http://www.jmp.com/support/help/Join_Data_Tables.shtml . En la tercera tabla, haga doble clic en el encabezado de la columna "¿Criterio cumplido?". Esta es una columna de fórmula JMP (con una propiedad 'Orden de valor' definida): http://www.jmp.com/support/help/Create_a_Formula_Column.shtml .
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Hola Ian En primer lugar, me gustaría agradecerle su respuesta y ayuda extendida.
Siendo nuevo en JMP y también no programador, más un hombre de negocios, necesito un poco más de laicos y orientación paso a paso. Me gustaría ir con el enfoque interactivo, ya que podría ser el más cómodo y permitir una resolución más rápida.
Pero antes de eso, me gustaría darle una claridad detallada de mi necesidad ... He ilustrado una instantánea ficticia de los datos en las dos tablas para este propósito y enumeré dos escenarios ... seguidos de una tercera aclaración basada en la ejecución. Lo siento por esta larga y sinuosa respuesta, pero creo que es necesario poder ayudar a proporcionar la orientación adecuada. Gracias una vez más por su paciencia y tiempo.
1. escenario 1
Tabla 1 de JMP para pacientes ambulatorios: (solo se muestran las columnas relevantes)
Año de identificación del paciente Fecha de visita ..... ........ ...... ........
2010 1 20/03/2010
2010 1 05/15/2010
2011 1 19/01/2011
2011 1 08/04/2011
.
.
2010 2 18/06/2010
2010 2 07/12/2010
2010 2 08/1/2010
.
.
y así sucesivamente para n pacientes ... Puede haber un paciente con solo una visita ambulatoria en 5 años ..
Tabla 2 de JMP para pacientes hospitalizados: (solo columnas relevantes)
Año de identificación del paciente Fecha de visita ..... ........ ...... ........
2010 1 01/08/2010
2010 1 06/10/2010
2010 1 19/10/2010
2011 1 07/15/2011
.
.
2010 3 04/12/2010
2010 3 20/09/2010
2010 3 12/10/2010
.
y así sucesivamente para n pacientes ... Puede haber un paciente con solo una visita de paciente hospitalizado en 5 años. No hay datos para el paciente 2 en esta tabla ...
Lo que necesito es la tabla y la estructura de datos para cada paciente en tabla ambulatoria, querría comparar el Fechas de visitas ambulatorias y fechas de visitas de pacientes hospitalizados para ese paciente y crea una tabla de subconjuntos que registra la fila de pacientes ambulatorios afectados (todas las columnas de la tabla de pacientes ambulatorios para esa fila identificada) siempre que se cumplan los siguientes criterios: La fecha de la visita ambulatoria es <= 14 días a partir de la fecha de la visita del paciente hospitalizado. (Tenga en cuenta que la fecha de la visita del paciente interno debe ser anterior a la fecha de la consulta externa antes de que se verifiquen los criterios) . Esta fila para pacientes ambulatorios también debe incluir la columna de la fecha de visita del paciente internado en la tabla de subconjuntos creada de este modo.
2. Escenario 2.
También tengo una tabla concatenada creada mediante la concatenación de la tabla y los datos anteriores para pacientes hospitalizados y ambulatorios. En esto mesa concat , Introduje una columna para identificar qué fila de datos de pacientes estaba hospitalizada y qué paciente ambulatorio y también mantenía los mismos nombres de columna. En tal escenario, ¿cómo se modificaría la fórmula en el escenario 1 para generar la tabla de subconjuntos?
3. Para las fórmulas construidas en los escenarios 1 y 2, ¿Dónde dentro de JMP debo aplicar / ejecutar la fórmula para poder obtener la tabla de subconjuntos?
Re: ¿Unir dos tablas JMP almacenadas en una carpeta local según los criterios?Dado que su punto de partida parece ser dos tablas JMP, y siempre que no le falten recursos, puede ser que también haga la unión y la aplicación de su criterio en JMP. ¡Vea el código a continuación, pero observe el orden de los argumentos en la función 'DateDifference ()'! Si desea trabajar de forma interactiva, solo mire la fórmula en "¿Criterio cumplido?" Columna y construye la análoga para tu caso.
NombresDefaultToHere ( 1 ) ;
// Hacer algunos datos simulados de 'fecha'
nr = 100 ;
dt1 = Tabla nueva ( "En" ,
Nueva Columna ( "CARNÉ DE IDENTIDAD" , Numérico , Nominal , Valores (( 1 :: nr ) ` )) ,
Nueva Columna ( "En fecha" , Numérico , Continuo ,
Fórmula ( RandomInteger ( FechaDMY ( 1 , 1 , 2014 ) , FechaDMY ( 31 , 12 , 2014 ))) ,
Formato ( "ddMonyyyy h: m: s" , 22 , 0 ) ,
Formato de entrada ( "ddMonyyyy h: m: s" , 0 ) ,
)
) ;
inVals = Columna ( dt1 , "En fecha" ) << getValues ;
diadelay = J ( nr , 1 , Redondo ( RandomNormal ( 14 , 7 ) , 0 )) ;
diadelay El Loc ( diadelay <= 0 )] = 0 ;
outVals = inVals + En días ( diadelay ) ;
dt2 = Tabla nueva ( "Afuera" ,
Nueva Columna ( "CARNÉ DE IDENTIDAD" , Numérico , Nominal , Valores (( 1 :: nr ) ` )) ,
Nueva Columna ( "Fecha de salida" , Numérico , Continuo ,
Valores ( outVals ) ,
Formato ( "ddMonyyyy h: m: s" , 22 , 0 ) ,
Formato de entrada ( "ddMonyyyy h: m: s" , 0 ) ,
)
) ;
// Únete a dt1 y dt2
Espere ( 3 ) ;
dt3 = dt2 << Unirse (
Con ( dt1 ) ,
Seleccionarcon ( : CARNÉ DE IDENTIDAD , : En fecha ) ,
Seleccionar ( : Fecha de salida ) ,
Haciendo coincidir las columnas ( : CARNÉ DE IDENTIDAD = : CARNÉ DE IDENTIDAD ) ,
Soltar múltiplos ( 0 , 0 ) ,
Incluir no coincidencias ( 0 , 0 ) ,
Conservar el orden de la mesa principal ( 1 ) ,
Tabla de salida ( "Fechas de entrada y salida" )
) ;
// Agregar una columna para indicar si el crirerion está satisfecho
dt3 << Nueva Columna ( "Criterio cumplido?" ,
Numérico ,
"Nominal" ,
Formato ( "Mejor" , 12 ) ,
Fórmula ( Si ( DateDifference ( : En fecha , : Fecha de salida , "Día" ) <= 14 , 1 , 0 ) ) ,
Etiquetas de valor ( { 0 = "No" , 1 = "Sí" } ) ,
Establecer seleccionado
) ;