Script : sous-ensemble de table de données avec filtres de zone de liste déroulanteBonjour,
J'ai essayé d'écrire un script pour créer un sous-ensemble d'une table de données plus grande. Le nouveau sous-ensemble doit contenir un numéro d'identification du sujet, une date de naissance et une plage de dates sélectionnées. J'ai écrit un script qui demande le numéro d'identification, la date de début et la date de fin dans trois zones de texte différentes. (Inclus ci-dessous, et c'est loin d'être parfait). Cependant, je voudrais des menus déroulants dans la fenêtre contextuelle pour montrer quels numéros d'identification sont disponibles pour la table de données actuelle et les dates qui l'accompagnent pour ce sujet. En suivant l'exemple d'ici, http://www.jmp.com/support/notes/54/614.html , j'ai essayé de travailler avec des zones de liste déroulante, mais je n'arrive pas à faire les choses correctement.
Là où le problème se résume à faire réagir le deuxième/troisième menu déroulant en conséquence à la sélection du numéro d'identification. Choses que j'ai remarquées : Summarize et Associative Array aident à réduire les dates en double et les espaces blancs, et les dates ne sont pas dans le "m/d/y" préféré.
Toute aide appréciée !
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 : sous-ensemble de table de données avec filtres de zone de liste déroulanteComment scriptez-vous montrant la partie de table de sous-ensemble ?
Re : Script : sous-ensemble de table de données avec filtres de zone de liste déroulanteLe dispositif de sélection, la liste de sélection par rapport au curseur est basé sur le type de modélisation de la colonne.Si vous changez simplement le type de modélisation en "Ordinal", cela fera de la sélection une liste de sélection.
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 )
)
);
ou, vous pouvez transformer la colonne Année en une valeur de date JMP réelle et placer un format de date sur la colonne, et vous verrez une version de curseur beaucoup plus agréable du code
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 : sous-ensemble de table de données avec filtres de zone de liste déroulanteah bah c'est beaucoup plus simple !
En suivant les données d'échantillonnage, la sélection du type de film est excellente, serait-il possible d'obtenir quelque chose de similaire pour la colonne Année. Peut-être formater le type pour obtenir des valeurs discrètes par opposition à une année jusqu'à la troisième décimale ?
Re : Script : sous-ensemble de table de données avec filtres de zone de liste déroulanteVous pouvez certainement créer votre propre boîte de dialogue unique, avec les exigences que vous avez spécifiées, mais la façon simple de faire ce que vous voulez est de créer un script de filtre de données, puis d'utiliser la capacité de sélection intégrée, l'utilisateur peut alors simplement aller au triangle rouge et sélectionnez "Afficher le sous-ensemble" et la table de données sur laquelle vous avez écrit sera créée
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 : sous-ensemble de table de données avec filtres de zone de liste déroulanteC'est là que j'en suis sur l'utilisation des Combo Boxes, c'est un gros gâchis...
dt = table de données actuelle();
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 );
Résumer( a = By( :Patient ID1 ) );
Insérer dans( un, "", 1 );
//Résumer( b = By( :Coll Date ) );
date = Associative Array( ( :Coll Date << Get Values ) ) << Get Keys;
Nouvelle fenêtre( "Exemple",
< H Zone de liste(
Boîte de dialogue( "Sélectionner l'ID du patient : ",
cb1 = ComboBox(
un,
< Fonction( {ceci},
selection = this << Get Selected();
r = //Pour chaque ligne( Selected(Row State() = :ID patient1 == Num(selection)));
dt << Get Rows Where( :ID patient == Num( selection ) );
Résumer( b = By( :Coll Date[r] ) );
b << Type de données( "Caractère", Informat( "j/m/a" ), Format( "m/j/a" ) );
//b = Associative Array( (:Coll Date[r] << Get Values)) << Get Keys;
//startDate = Associative Array( (date[r] << Get Values ) ) << Get Keys;
cb2 << Définir les éléments( date[r] );
)
)
)
),
Panel Box( "Sélectionnez une date de début : ",
cb2 = ComboBox(
b,
< Fonction( {ceci},
un = this << Get Selected();
g = dt << Get Rows Where( :Coll Date > one );
Résumer( c = By( :Coll Date[g] ) );
endDate = :Coll Date[g] ;
cb3 << Définir les éléments ( endDate );
)
)
)
),
Panel Box( "Sélectionnez une date de fin : ",
cb3 = ComboBox(
b,
< Fonction( {ceci},
deux = ceci << Get Selected() ) )
)
)
)
);
Pour chaque ligne(
Selected( Row State() ) = :Patient ID1 == Char( Selection ) & Format( :Coll Date, "m/d/y" ) >= un
& Format( :Coll Date, "m/d/y" ) <= deux
);
subdt = dt << Subset( Columns( :Patient ID1, :DOB, :Coll Date ), Output Table Name( "Subset" ), );
subdt << Sort( By( :Coll Date ), Replace Table );