filtre de données pour la boucle IISalut,
J'ai une table de données qui est mise à jour (dans le script d'origine via une requête), par exemple toutes les 5 secondes et qui sera ajoutée à une autre table. Jusqu'ici tout va bien. Comment puis-je savoir que la sélection ne sera pas effacée après chaque itération?
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal"),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
df = dt0 << Data Filter(
Add Filter( Columns( :sex ) )
);
n=0;
e=10;
startwork = Function( {},
dt1=Open( "$sample_data/big class.jmp");
dt0 << Concatenate( current data table(), "Append to First Table");
n+=1;
Close (dt1, nosave);
if(n<E></E>Ce serait formidable si ma sélection sera valable pour le tableau de données et le graphique après chaque itération jusqu'à ce que la section soit modifiée par l'utilisateur.
Merci beaucoup!
Re: filtre de données pour la boucle IIDans le cas où j'implémente le script dans une boucle (comme la première question), la sélection est uniquement valide en fonction des numéros de ligne. J'ai besoin de la sélection basée sur la sélection de la colonne. Pour cela j'ai trouvé une solution de contournement possible:
Construisez une liste et utilisez cette sélection pour la table:
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal"),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
List={"F","M"};
gb=new window("Choice",
LB1=List Box(List, width(150), maxSelected(5), nlines(1))
);
n=0;
e=10;
startwork = Function( {},
dt1=Open( "$sample_data/big class.jmp");
Choice=LB1 << get selected;
dt0 << Concatenate( current data table(), "Append to First Table");
dt0 << Select Where( Contains( Choice, :sex ) );
n+=1;
Close (dt1, nosave);
if(n<E></E>Merci beaucoup pour vos réponses, j'ai appris des commandes très utiles!
Re: filtre de données pour la boucle IIVoici une approche légèrement différente. Il utilise le message << Get Script du filtre de données «Test», puis effectue une légère modification, puis l'applique à la table de données Big Class. Le tout est déclenché par le gestionnaire de changement de filtre appliqué au filtre de données de la table de données de test.
Names Default To Here( 0 );
dt1 = Open( "$sample_data/big class.jmp" );
dt0 = New Table( "Test",
New Column( "name", Character, "Nominal" ),
New Column( "age", numeric, continuous ),
New Column( "sex", Character, "Nominal", Values( {"F", "M", "F", "M", "F", "M", "F", "M"} ) ),
New Column( "height", numeric, continuous ),
New Column( "weight", numeric, continuous, )
);
df0 = dt0 << Data Filter( Add Filter( Columns( :sex ), /* variable get where selection df0*/ ) );
f = Function( {a},
dschar = Char( df0 << get script );
Try( df1 << close );
dschar = "df1 = dt1 " || Substr( dschar, 21 );
Eval( Parse( dschar ) );
Try( df1 << close );
);
rs = df0 << Make Filter Change Handler( f );
Vous pouvez également explorer la possibilité de sous-définir votre table de données principale ou de créer une table de données récapitulative à partir de votre table principale et d'utiliser l'option "Lier à la table d'origine". Vous pouvez ensuite placer un filtre de données sur la table de données sous-définie ou récapitulée. Il répliquera automatiquement les modifications apportées à la table d'origine.
Re: filtre de données pour la boucle IIMerci pour votre réponse. Malheureusement, je ne pouvais pas tirer le soupçon de l'aide ==> Index de script ==> Filtre de données ..........
J'ai essayé plusieurs options mais rien ne fonctionne.
Comment puis-je obtenir la clause where ou l'argument where en tant que variable de df0 et les placer dans df1 en tant qu'argument where?
J'ai trouvé la clause << get where mais c'est juste un format de texte ...
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal", Values({"F", "M", "F", "M", "F", "M", "F", "M"})),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
df0 = dt0 << Data Filter(
Add Filter( Columns( :sex ),/* variable get where selection df0*/ )
);
dw0 = df0 << get where clause;
dt1=Open( "$sample_data/big class.jmp");
df1 = dt1 << Data Filter(
Add Filter( Columns( :sex) /* set where selection from df0*/ )Re: filtre de données pour la boucle IIJe suggère qu'avant la mise à jour, vous récupériez la clause Where à partir du filtre de données, puis effectuez la mise à jour, puis réappliquez la clause Where récupérée.
Voir
Aide ==> Index de script ==> Filtre de données ..........
pour plus de détails et exemple