Skript: Datentabellen-Teilmenge mit KombinationsfeldfilternHallo,
Ich habe versucht, ein Skript zu schreiben, um eine Teilmenge einer größeren Datentabelle zu erstellen. Die neue Teilmenge sollte eine Probanden-ID-Nummer, ein Geburtsdatum und einen Bereich ausgewählter Daten enthalten. Ich habe ein Skript geschrieben, das in drei verschiedenen Textfeldern nach der ID-Nummer, dem Startdatum und dem Enddatum fragt. (Unten enthalten, und es ist alles andere als perfekt). Ich hätte jedoch gerne einige Dropdown-Menüs im Popup-Fenster, um anzuzeigen, welche ID-Nummern für die aktuelle Datentabelle verfügbar sind, und die zugehörigen Daten für dieses Thema. Dem Beispiel von hier folgend, http://www.jmp.com/support/notes/54/614.html Ich habe versucht, mit Kombinationsfeldern zu arbeiten, aber es scheint mir nicht gelungen zu sein.
Das Problem besteht darin, dass das zweite/dritte Dropdown-Menü entsprechend auf die ID-Auswahl reagiert. Dinge, die mir aufgefallen sind: Summarize und Associative Array tragen dazu bei, doppelte Datumsangaben und Leerzeichen zu reduzieren, und Datumsangaben liegen nicht im bevorzugten „m/d/y“ vor.
Jede Hilfe wird geschätzt!
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>A
Betreff: Skript: Teilmenge der Datentabelle mit KombinationsfeldfilternWie erstellen Sie ein Skript, das den Teilmengentabellenteil anzeigt?
Betreff: Skript: Teilmenge der Datentabelle mit KombinationsfeldfilternDas Auswahlgerät, die Auswahlliste oder der Schieberegler, basiert auf dem Modellierungstyp für die Spalte.Wenn Sie einfach den Modellierungstyp in „Ordinal“ ändern, wird die Auswahl zu einer Auswahlliste.
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 )
)
);
Oder Sie können die Spalte „Jahr“ in einen tatsächlichen JMP-Datumswert umwandeln und ein Datumsformat in die Spalte einfügen. Dann sehen Sie eine viel schönere Slider-Version des Codes
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 )
)
);Betreff: Skript: Teilmenge der Datentabelle mit KombinationsfeldfilternOh wow, viel einfacher!
Nach den Beispieldaten ist die Auswahl des Filmtyps großartig. Wäre es möglich, etwas Ähnliches für die Spalte „Jahr“ zu erhalten? Vielleicht formatieren Sie den Typ, um diskrete Werte zu erhalten, anstatt ein Jahr bis zur dritten Dezimalstelle?
Betreff: Skript: Teilmenge der Datentabelle mit KombinationsfeldfilternSie können sicherlich Ihr eigenes, einzigartiges Dialogfeld mit den von Ihnen angegebenen Anforderungen erstellen, aber die einfachste Möglichkeit, das zu tun, was Sie möchten, besteht darin, ein Skript für einen Datenfilter zu erstellen. Anschließend kann der Benutzer mithilfe der integrierten Auswahlfunktion einfach zum roten Dreieck gehen und Wählen Sie „Teilmenge anzeigen“ und die Datentabelle, über die Sie geschrieben haben, wird erstellt
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 )
)
);
Betreff: Skript: Teilmenge der Datentabelle mit KombinationsfeldfilternHier stehe ich zur Verwendung von Kombinationsfeldern, das ist ein großes Durcheinander ...
dt = Aktuelle Datentabelle();
Column( dt, "Coll Date" ) << Data Type( "Character", Informat( "d/m/y" ), Format( "m/d/y" ) );
Column( dt, "Coll Date" ) << Modeling Type( "Continuous" );
Column( dt, "Coll Date" ) << Order( Ascending );
Summarize( a = By( :Patient ID1 ) );
Einfügen in( a, "", 1 );
//Zusammenfassen( b = By( :Coll Date ) );
date = Associative Array( ( :Coll Date << Get Values ) ) << Get Keys;
Neues Fenster( „Beispiel“,
< H-Listenfeld(
Panel-Box( „Patienten-ID auswählen:“,
cb1 = Kombinationsfeld(
A,
< Funktion( {dies},
Selection = this << Get Selected();
r = //Für jede Zeile( Selected(Row State() = :Patient ID1 == Num(selection)));
dt << Zeilen abrufen Where( :Patienten-ID == Num( Auswahl ) );
Summarize( b = By( :Coll Date[r] ) );
b << Data Type( "Character", Informat( "d/m/y" ), Format( "m/d/y" ) );
//b = Associative Array( (:Coll Date[r] << Get Values)) << Get Keys;
//startDate = Associative Array( (date[r] << Get Values ) ) << Get Keys;
cb2 << Set Items( date[r] );
)
)
)
),
Panel-Box( „Wählen Sie ein Startdatum aus:“,
cb2 = Kombinationsfeld(
B,
< Funktion( {dies},
one = this << Get Selected();
g = dt << Get Rows Where( :Coll Date > one );
Summarize( c = By( :Coll Date[g] ) );
endDate = :Coll Date[g];
cb3 << Set Items( endDate );
)
)
)
),
Panel Box( „Wählen Sie ein Enddatum aus:“,
cb3 = Kombinationsfeld(
B,
< Funktion( {dies},
two = this << Get Selected() ) )
)
)
)
);
Für jede Reihe(
Selected( Row State() ) = :Patient ID1 == Char( Selection ) & Format( :Coll Date, "m/d/y" ) >= one
& Format( :Coll Date, "m/d/y" ) <= zwei
);
subdt = dt << Subset( Columns( :Patient ID1, :DOB, :Coll Date ), Output Table Name( "Subset" ), );
subdt << Sort( By( :Coll Date ), Replacement Table );