Unire due tabelle JMP memorizzate nella cartella locale in base a criteri?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti,
Sono relativamente nuovo a JMP e sto ancora esplorando ..
Ho due file jmp nella mia cartella locale, che contengono l'ID del paziente ospedaliero e le informazioni sulla data della visita in colonne. Un file jmp contiene dati sulle visite ambulatoriali e un altro file dati sulle visite ospedaliere, entrambi per un periodo dal 2010 al 2015.
Voglio confrontare e unire i due file jmp in modo tale che l'unione mi fornisca un sottoinsieme di pazienti la cui data di visita ambulatoriale sia inferiore a 14 giorni dalla data di visita stazionaria (criteri)
Sto usando JMP 12.0 e The "Join" nel menu Tabelle non mi permette di costruire i criteri tra le colonne nelle due tabelle.
Come faccio? Devo scrivere un SQL? In tal caso, e dove dovrei scrivere l'SQL che può confrontare le due tabelle jmp e unirle per ricavare la risposta?
Grazie per qualsiasi aiuto.
Saluti,
Vinod
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Ciao Ian,
Ho scoperto che avevo due colonne nella mia tabella di degenza che probabilmente ritardavano l'intero processo di elaborazione o rimanevano bloccate senza poter procedere. Uno era Age, come si può vedere nella mia immagine precedente quando ad ogni istanza di elaborazione mostrava "valutare l'età" ed entrare in un giro rotante. Ora Age e l'altra colonna sono colonne formula e quando ho hardcoded i valori e rimosso la formula il bloccato era sparito..Meravane perché?
Ora lo script potrebbe eseguire e aprire una tabella PID unica di 120k in 3 ore. Questo è con un processore core i7 a 64 bit RAM da 8 bit con solo i processi desktop basati su Windows standard in esecuzione e lo script era l'unico caricatore pesante.
Grazie e saluti,
Vinod Subramanian
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Sì, capisco che è probabilmente un problema di prestazioni associato a risorse e fuori ambito. In questo caso puoi ignorare e chiudere questo thread.
Grazie per aver contribuito a far uscire una sceneggiatura che funziona. Sarebbe stato utile se potessi utilizzarlo per un risultato positivo sull'intero set di dati di grandi dimensioni. Ma deciderà su un compromesso eseguendo lo script in batch di dati se non funziona nient'altro.
Solo su una FYI, dal momento che hai chiesto ... l'ID del paziente unico è di circa 500.000.
Ogni volta che inizio a eseguire lo script sulle tabelle di dati di grandi dimensioni, si aprono e poi vedo "Valutare l'età" (sul pannello inferiore della finestra del browser), vedere l'immagine incorporata. Rimane così con la freccia che gira come se l'elaborazione è in corso ma lo stato di "Età di valutazione" non cambia mai. Ho una colonna Age nei tavoli, ma perché finisce qui, mi picchia? Ieri ho tenuto la sceneggiatura per 20 ore consecutive e poi l'ho uccisa ..

Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?In cima alla discussione, ho detto "finché non sei a corto di risorse". . .
Penso che milioni di file siano ambiziosi. Come ho già detto, il codice che ho scritto non è "il migliore" in alcun senso. Anche se potrebbe essere ulteriormente ottimizzato, non sono ancora sicuro che le dimensioni dei dati che menzioni potrebbero essere valide. Questo non è davvero un commento su JMP di per sé, ma più su ciò che è ragionevole per qualsiasi software desktop.
Potrei riuscire a scavare un po 'più a fondo, ma per aiutarmi sarebbe bene sapere quanti ID distinti ci sono nei due grandi tavoli che menzioni. Dal modo in cui ho scritto il codice, so che questo sarebbe uno dei fattori nel determinare il suo completamento con successo.
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Ciao Ian , Ho lavorato lo script su un set di dati più piccolo circa 100 record per ogni tabella e l'output è come previsto. Grazie. Ho segnato la risposta corretta nella catena qui sopra.
La sfida che ora sto affrontando è quella di eseguire lo script sui set di dati più grandi (2 milioni di dischi) che possiedo.
Inoltre, potresti aiutarmi nella sceneggiatura dello scenario 2 che ho articolato in precedenza. Grazie. Se vuoi che registri questa come un'altra query, posso farlo.
Grazie mille per l'aiuto.
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Ciao Ian, buongiorno.
Ho iniziato a eseguire la sceneggiatura sui file che ho. I tavoli sono enormi .. Circa 2 milioni di file in regime ambulatoriale e un milione in degenza .. Il copione continuava a funzionare .. L'ho tenuto in funzione per 12 ore e l'ho ucciso pochi minuti prima.
Proverò a eseguirlo dapprima su un set di dati più piccolo per vedere come reagisce.
Riesci a notare altri problemi nella sceneggiatura? Ho rimosso alcuni dei tuoi codici, cambiato per richiamare le tabelle e rinominato anche i nomi delle colonne presenti nelle tabelle.
Saluti,
Vinod
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?OK. Sembra che tu sia vicino allora. Potrebbero esserci altri problemi, ma nel tuo codice le righe 2 e 3 dovrebbero essere:
dti = Tabella dati ( "ANE_2010-2015" ) ;
dto = Tabella dati ( "Unico-SOC-2011-2015" ) ;
poiché questo è il modo di riferirsi a una tabella in JSL.
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Buongiorno e grazie Ian. Ho eseguito il file jsl e l'output funziona correttamente ..
Ho provato a modificare il jsl da applicare sui due tavoli jmp che avevo. Mi sembra che stia facendo qualcosa di sbagliato nello script come non succede nulla sul running script né ricevo alcun messaggio di errore, sto allegando il jsl modificato per la tua verifica e guida.
Lo script sopra funziona per scenario1, per lo scenario 2 che ho delineato prima in cui le tabelle jmp ospedaliere e ambulatoriali sono concatenate in una tabella jmp integrata come dovrebbe cambiare la sceneggiatura? Per distinguere quali file di dati sono degenti e che sono ambulatoriali, ho avuto una colonna introdotta con il flag "OP" e "IP" contro ogni riga di dati. I dati ID paziente e visita di entrambe le tabelle ambulatoriale e ambulatoriale sono concatenati in una colonna ID paziente e Data visita all'interno della tabella jmp integrata.
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Solo per aiutarti a vederlo un po 'più facile ho scritto codice per implementare la logica che descrivo immediatamente sopra. Salva l'allegato, aprilo in JMP e fai "Modifica> Esegui script". Esso (a caso) rende le tabelle "In-ambulatorio" e "Ambulatoriale" (esempi dei quali sono allegati in precedenza), ma poi aggiunge colonne a "Ambulatorio". Non preoccuparti del codice, basta guardare le due tabelle e vedere se è quello che stai cercando.
(A proposito, non sostengo che il codice sia "migliore" in alcun senso, non ultimo perché, come mostra il thread, non sono sicuro di avere i requisiti chiari).
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Grazie Ian . Da quello che hai scritto, penso che tu abbia capito bene ... Dammi 24 ore per tornare a te dopo aver provato i file che mi hai mandato.
FYI da un contesto aziendale, sto cercando di trovare i casi di pazienti che sono venuti per una visita ambulatoriale entro 14 giorni dalla loro visita stazionaria. In futuro ho solo bisogno di modificare il numero di giorni (gap) per ottenere il set di risultati richiesto in base alla domanda aziendale.
Una delle tue affermazioni "Ho la sensazione che non ti aspetti più corrispondenze, quindi non sono sicuro di voler accettare questa possibilità.",
Ogni visita ambulatoriale o stazionaria è un caso separato e una riga separata nelle tabelle ... È possibile che un paziente possa avere due appuntamenti ambulatoriali nello stesso giorno, con specialità diverse o uguali. Se questo è ciò che intendevi per più corrispondenze, allora è possibile quando esegui il ciclo di ciascuna visita di degenza del paziente.
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?OK. Ho inventato alcuni dati che penso siano simili a quelli che hai a disposizione. Salva gli allegati, apri le tabelle ed esegui lo script salvato in ognuna da cercare.
Per verificare la mia comprensione, si desidera eseguire il loop delle righe in "Ambulatorio" come segue:
1 /. La prima riga è 'ID = 1' e 'Out Date = 20Jan2014 01:28:05' .
2 /. Trova una o più righe in "In-ambulatorio" in cui "ID = 1" e "In data" non sono più di 14 giorni prima di 20 Gen2014 01:28:05. Ho la sensazione che non ti aspetti più corrispondenze, quindi non sono sicuro di voler consentire questa possibilità. Ma se esiste una corrispondenza, si desidera aggiungere una nuova colonna a "Ambulatorio" che contenga il valore "In data" nella riga corrente (in questo caso la riga 1).
3 /. Passa alla riga successiva in ' ambulatoriale 'e ripetere fino alla fine del tavolo.
È corretto, per favore?
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri? Ciao Ian ,
Non avevo menzionato prima il mio background non codificante, quindi ti capisco perfettamente quando mi hai inviato la risposta. Grazie.
Ho provato come hai detto tu .. Ecco le uscite che ottengo

Un'osservazione che ho sui tavoli
- Ogni paziente in entrambi i tavoli in entrata e in uscita ha un solo timbro orario di visita e
- Tutti i pazienti figurano in entrambi i tavoli (dentro e fuori)
Come da dettagli dello scenario che ho aggiunto in cima alla tua prima risposta ... cercando di articolare di seguito ...
un. noterete dalla tabella degli scenari e dalla struttura dati forniti, che ogni paziente ha più visite nella tabella 1 (ambulatoriale) e lo stesso paziente può avere più visite o non può avere nemmeno una visita nella tabella 2 (degente).
b. La necessità che ciascuna data di visita stazionaria di un paziente sia inferiore a qualsiasi data di visita ambulatoriale per quel paziente (si noti che ciascuna data di visita stazionaria di un paziente deve essere confrontata con ciascuna data di visita ambulatoriale dello stesso paziente)
c. Per le file ambulatoriali che soddisfano i criteri b, applicare i criteri che la data di visita stazionaria è <= 14 giorni di visita ambulatoriale dello stesso paziente (potrebbe aver erroneamente affermato il contrario prima. Scusate)
d. Ogni volta che si soddisfa il criterio c la riga in Tabella ambulatoriale contro quel paziente deve essere segnalato come 1 (sì)
e. Una nuova colonna deve essere aggiunta nel Tabella ambulatoriale dopo il criterio incontrato colonna flag per acquisire la data della visita di degenza (rispetto alla quale il criterio è stato raggiunto)
f. Se non ci sono righe ambulatoriali che soddisfano nessuno dei criteri di data di visita stazionaria b e c, quindi contrassegnare 0 nella tabella Ambulatoriale.
Spero di essere sufficientemente chiaro.
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Mi dispiace, spesso utilizziamo il codice per rispondere rapidamente alle domande, ma per essere chiari, non è certamente necessario utilizzarlo per lavorare con JMP.
Per vedere se sono sulla strada giusta, per favore, seleziona il codice qui sopra e copialo (negli appunti). Quindi fai 'New> New Script' e incollalo nella finestra risultante. Quindi fai 'Modifica> Esegui script'. Dopo un breve ritardo, questo dovrebbe rendere tre tabelle, chiamate "In", "Out" e "In and Out Dates". Puoi ottenere il terzo utilizzando "Tabelle> Unisci" nei primi due e unendo le colonne corrispondenti. Se hai bisogno di più aiuto su come farlo, vedi: http://www.jmp.com/support/help/Join_Data_Tables.shtml . Nella terza tabella, fai doppio clic sull'intestazione della colonna "Criterion Met?". Questa è una colonna formula JMP (con una proprietà 'Valore ordine' definita): http://www.jmp.com/support/help/Create_a_Formula_Column.shtml .
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Ciao Ian , In primo luogo vorrei ringraziarvi per la vostra risposta e aiutare esteso.
Essendo nuovo di JMP e anche un non-coder, più un uomo d'affari, ho bisogno di un po 'più di un laico e di una guida passo-passo. Mi piacerebbe andare con l'approccio interattivo come potrebbe essere il più comodo e consentire una risoluzione più veloce.
Ma prima, vorrei darti una chiarezza dettagliata del mio bisogno ... Ho illustrato un'istantanea fittizia dei dati nelle due tabelle per lo scopo e ho elencato due scenari ... seguiti da un terzo chiarimento basato sull'esecuzione correlata. Ci scusiamo per questa risposta lunga e tortuosa, ma ritengo necessario essere in grado di fornire una guida appropriata. Grazie ancora per la pazienza e il tempo.
1. scenario 1
Tabella JMP ambulatoriale 1: (sono mostrate solo le colonne pertinenti)
Anno ID paziente Data di 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
.
.
e così via per n pazienti ... Ci può essere un paziente con una sola visita ambulatoriale in 5 anni ..
Tabella JMP stazionario 2: (solo colonne pertinenti)
Data visita ID paziente anno ..... ........ ...... ........
2010 1 01/08/2010
2010 1 06/10/2010
2010 1 19/10/2010
2011 1 15/07/2011
.
.
2010 3 04/12/2010
2010 3 il 20/09/2010
2010 3 12/10/2010
.
e così via per n pazienti. Ci può essere un paziente con una sola visita stazionaria in 5 anni. Non ci sono dati per il paziente 2 in questa tabella ...
Ciò di cui ho bisogno è data la tabella e la struttura dei dati per ogni paziente nel tavolo ambulatoriale, vorrei confrontare il date di visita ambulatoriale e date di visita stazionaria per quel paziente e creare una tabella secondaria che registra la riga ambulatoriale interessata (tutte le colonne della tabella ambulatoriale per quella riga identificata) ogni volta che vengono soddisfatti i seguenti criteri: la data della visita ambulatoriale è <= 14 giorni dalla data della visita stazionaria (Nota la data di visita stazionaria dovrebbe essere prima della data di visita ambulatoriale prima che i criteri siano controllati) . Questa riga ambulatoriale dovrebbe includere anche la colonna della data della visita stazionaria nella tabella sottoinsieme così creata.
2. Scenario 2.
Ho anche una tabella concatenata costruita concatenando la tabella e i dati ospedalieri e ambulatoriali di cui sopra. In questo tavolo concat , Ho introdotto una colonna per identificare quale riga di dati del paziente era Inpatient e che ambulatorialmente e anche mantenuto gli stessi nomi di colonna. In uno scenario del genere, in che modo la formula dello scenario 1 viene modificata per generare la tabella dei sottoinsiemi?
3. Per le formule costruite nello scenario 1 e 2, dove all'interno di JMP dovrei applicare / eseguire la formula per essere in grado di ottenere la tabella dei sottoinsiemi?
Ri: Unire due tabelle JMP memorizzate nella cartella locale in base ai criteri?Dato che il tuo punto di partenza sembra essere due tabelle JMP, e fintanto che non sei a corto di risorse, potresti anche fare il join e l'applicazione del tuo criterio in JMP. Vedi il codice qui sotto, ma nota l'ordine degli argomenti nella funzione 'DateDifference ()'! Se vuoi lavorare in modo interattivo, guarda la formula nel "Criterion Met?" colonna e costruire l'analogo per il tuo caso.
NamesDefaultToHere ( 1 ) ;
// Crea dei dati "data" simulati
nr = 100 ;
dt1 = nuovatabella ( "Nel" ,
newColumn ( "ID" , Numerico , Nominale , Valori (( 1 :: nr ) ` )) ,
newColumn ( "In data" , Numerico , Continuo ,
Formula ( RandomInteger ( DateDMY ( 1 , 1 , 2014 ) , DateDMY ( 31 , 12 , 2014 ))) ,
Formato ( "ddMonyyyy h: m: s" , 22 , 0 ) ,
Formato di input ( "ddMonyyyy h: m: s" , 0 ) ,
)
) ;
inVals = Colonna ( dt1 , "In data" ) << getValues ;
dayDelay = J ( nr , 1 , Il giro ( CasualeNormale ( 14 , 7 ) , 0 )) ;
dayDelay [ Loc ( dayDelay <= 0 )] = 0 ;
outVals = inVals + InDays ( dayDelay ) ;
dt2 = nuovatabella ( "Su" ,
newColumn ( "ID" , Numerico , Nominale , Valori (( 1 :: nr ) ` )) ,
newColumn ( "Out Date" , Numerico , Continuo ,
Valori ( outVals ) ,
Formato ( "ddMonyyyy h: m: s" , 22 , 0 ) ,
Formato di input ( "ddMonyyyy h: m: s" , 0 ) ,
)
) ;
// Unisciti a dt1 e dt2
Aspettare ( 3 ) ;
DT3 = dt2 << Aderire (
Con ( dt1 ) ,
SelectWith ( : ID , : In data ) ,
Selezionare ( : Data di uscita ) ,
Abbinando le colonne ( : ID = : ID ) ,
Drop multipli ( 0 , 0 ) ,
Includi non corrispondenti ( 0 , 0 ) ,
Mantieni l'ordine della tabella principale ( 1 ) ,
Tabella di output ( "In e Out Dates" )
) ;
// Aggiungi una colonna per indicare se il crirerion è soddisfatto
DT3 << Nuova colonna ( "Criterion Met?" ,
Numerico ,
"Nominale" ,
Formato ( "Migliore" , 12 ) ,
Formula ( Se ( DateDifference ( : In data , : Data di uscita , "Giorno" ) <= 14 , 1 , 0 ) ) ,
Etichette di valore ( { 0 = "No" , 1 = "Sì" } ) ,
Imposta selezionato
) ;