Script: sottoinsieme di tabelle di dati con filtri combinatiCiao,
Ho provato a scrivere uno script per creare un sottoinsieme di una tabella di dati più grande. Il nuovo sottoinsieme dovrebbe contenere un numero ID soggetto, DOB e un intervallo di date selezionate. Ho scritto uno script che richiede l'ID#, la data di inizio e la data di fine in tre diverse caselle di testo. (Incluso di seguito, ed è tutt'altro che perfetto). Tuttavia, vorrei che alcuni menu a discesa nella finestra pop-up mostrassero quali ID# sono disponibili per la tabella di dati corrente e le date di accompagnamento per quell'argomento. Seguendo l'esempio da qui, http://www.jmp.com/support/notes/54/614.html , ho provato a lavorare con Combo Box, ma non riesco a farlo bene.
Il punto in cui si riduce il problema è fare in modo che il secondo/terzo menu a discesa reagisca di conseguenza alla selezione ID#. Cose che ho notato: il riepilogo e l'array associativo aiutano a ridurre le date duplicate e gli spazi bianchi e le date non sono nel "m/g/a" preferito.
Qualsiasi aiuto apprezzato!
dt = Current Data Table();
Column(dt, "Coll Date") << Data Type("Numeric", Informat("m/d/y"), Format("m/d/y") );
Column(dt, "Coll Date") << Modeling Type("Continuous");
Column(dt, "Coll Date") << Order(Ascending);
nw = New Window( "Subject ID by Date Range.",
<<MODAL>= Char( startDate ) & Format( :Coll Date, "m/d/y" ) <= Char( endDate )
);
subdt = dt << Subset(
Columns( :Patient ID1, :DOB, :Coll Date ),
Output Table Name( "subset" ),
);
subdt<< sort(by(:Coll Date), Replace Table);</MODAL>UN
Re: Script: sottoinsieme di tabelle di dati con filtri combinatiCome si esegue lo script che mostra la parte della tabella dei sottoinsiemi?
Re: Script: sottoinsieme di tabelle di dati con filtri combinatiIl dispositivo di selezione, l'elenco di selezione rispetto al dispositivo di scorrimento si basa sul tipo di modellazione per la colonna.Se modifichi semplicemente il tipo di modellazione in "Ordinale", la selezione verrà trasformata in un elenco di selezione.
dt=open("$SAMPLE_DATA\Movies.jmp");
dt:year << set modeling type(ordinal);
Current Data Table() << Data Filter(
Location( {37, 37} ),
Add Filter(
columns( :Type, :Year ),
Display( :Type, Size( 160, 90 ), List Display ),
Display( Size( 394, 16 ), :Year )
)
);
oppure, puoi trasformare la colonna Anno in un valore di data JMP effettivo e inserire un formato di data sulla colonna e vedrai una versione scorrevole del codice molto più bella
dt=open("$SAMPLE_DATA\Movies.jmp");
for each row(
dt:year= date mdy(1,1,year));
dt:year << format("m/d/y");
Current Data Table() << Data Filter(
Location( {37, 37} ),
Add Filter(
columns( :Type, :Year ),
Display( :Type, Size( 160, 90 ), List Display ),
Display( Size( 394, 16 ), :Year )
)
);Re: Script: sottoinsieme di tabelle di dati con filtri combinatioh wow, molto più semplice!
Seguendo i dati del campione, selezionare il tipo di film è fantastico, sarebbe possibile ottenere qualcosa di simile per la colonna Anno. Forse formattare il tipo per ottenere valori discreti anziché un anno fino alla terza cifra decimale?
Re: Script: sottoinsieme di tabelle di dati con filtri combinatiPuoi certamente creare la tua finestra di dialogo univoca, con i requisiti che hai specificato, ma il modo semplice per fare ciò che vuoi è creare uno script di un fileter di dati, quindi usando la capacità di selezione incorporata, l'utente può quindi semplicemente andare al triangolo rosso e seleziona "Mostra sottoinsieme" e verrà creata la tabella di dati di cui hai scritto
dt=open("$SAMPLE_DATA\Movies.jmp");
Current Data Table() << Data Filter(
Location( {37, 37} ),
Add Filter(
columns( :Type, :Year ),
Display( :Type, Size( 160, 90 ), List Display ),
Display( Size( 394, 16 ), :Year )
)
);
Re: Script: sottoinsieme di tabelle di dati con filtri combinatiQuesto è il punto in cui mi trovo a usare le Combo Box, è un gran casino...
dt = tabella dati corrente();
Column(dt, "Coll Date" ) << Tipo di dati("Character", Informat("g/m/y" ), Format("m/g/y" ) );
Colonna( dt, "Data di raccolta" ) << Tipo di modellazione( "Continuo" );
Colonna( dt, "Data di raccolta" ) << Ordine( Crescente );
Riepiloga( a = Per( :ID paziente1 ) );
Inserisci in( a, "", 1 );
//Riepiloga( b = Da( :Data di raccolta ) );
date = Array associativo( ( :Coll Date << Ottieni valori ) ) << Ottieni chiavi;
Nuova finestra( "Esempio",
< Casella di riepilogo H(
Casella del pannello ("Seleziona ID paziente: ",
cb1 = Casella combinata(
un,
< Funzione( {questo},
selezione = questo << Ottieni selezionato();
r = //Per ogni riga(Selezionata(Stato riga() = :ID paziente1 == Num(selezione)));
dt << Ottieni righe dove( :ID paziente == Num(selezione) );
Riepiloga( b = Da( :Coll Date[r] ) );
b << Tipo di dati("Carattere", Informat( "g/m/a" ), Formato("m/g/a" ) );
//b = Array associativo( (:Coll Date[r] << Ottieni valori)) << Ottieni chiavi;
//startDate = Array associativo( (date[r] << Ottieni valori ) ) << Ottieni chiavi;
cb2 << Imposta elementi( date[r] );
)
)
)
),
Casella del pannello ("Seleziona una data di inizio: ",
cb2 = Casella combinata(
b,
< Funzione( {questo},
uno = questo << Ottieni selezionato();
g = dt << Ottieni righe dove( :Coll Date > one );
Riepiloga( c = Da( :Coll Date[g] ) );
endDate = :Coll Date[g];
cb3 << Imposta elementi ( endDate );
)
)
)
),
Casella del pannello ("Seleziona una data di fine: ",
cb3 = Casella combinata(
b,
< Funzione( {questo},
due = questo << Ottieni selezionato() ) )
)
)
)
);
Per ogni riga(
Selezionato( Stato riga() ) = :ID paziente1 == Char(Selezione) & Formato( :Data di raccolta, "m/g/a") >= uno
& Format( :Coll Date, "m/g/y" ) <= due
);
subdt = dt << Subset( Columns( :Patient ID1, :DOB, :Coll Date ), Output Table Name("Subset"), );
subdt << Sort( By( :Coll Date ), Sostituisci tabella);