Sélection de lignes, puis sélection supplémentaire en fonction de celaJ'ai une table de données où je peux sélectionner des lignes en fonction du résultat d'une colonne.Je voudrais ensuite étendre cette sélection en fonction d'une valeur contenue dans les lignes précédemment sélectionnées.
j'ai essayé
dt = Current Data Table();
dr << select where( :ctrlrange > 0.23 );
h = Column( dt, "reagentkit_id" ) << get Values;
dt << select where( :reagentkit_id == h );
Cela n'a pas semblé fonctionner car JMP a gelé.
Le tableau de données peut avoir beaucoup de lignes.
La raison pour laquelle je veux faire cela est que certaines fois, la plage ctrl est supérieure à 0,23 et je veux toutes les données du réactif (où la plage ctrl n'a peut-être pas été supérieure à 0,23)
ScriptRe : Sélectionner des lignes, puis sélectionner davantage en fonction de celaVotre prémisse d'origine ne fonctionne pas comme vous le pensez.<
Voici un exemple qui fonctionne avec un critère de sélection, qui devrait être assez efficace.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
dt << select where(:weight <100);
dt << hide and exclude;
dt_rgt = dt << Summary(
Group( :name ),
Freq( "None" ),
Weight( "None" ),
link to original data table(1)
);
dt_rgt << delete rows;
dt << clear rowstates;
dt_rgt << select all rows;
close( dt_rgt, nosave);Re : Sélectionner des lignes, puis sélectionner davantage en fonction de celadt = Current Data Table();
dt << select where( :ctrlrange > 0.23 );
dt << Subset( Output Table( "Sel" ), Selected Rows( 1 ), selected Columns( 0 ) );
dt_rgt = dt << Summary(
Group( :reagentkit_id ),
N Catagories( :reagentkit_id ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 1 )
);
//h = Column( Sel, "reagentkit_id" ) << get Values;
dt_rgt << select where( Contains( Sel, :reagentkit_id ) );
Vous ne savez pas comment indiquer qu'il doit sélectionner où regarde la table Sel pour les valeurs à sélectionner dans la table dt_rgt.
Des idées??
Re : Sélectionner des lignes, puis sélectionner davantage en fonction de celaDois-je sélectionner les lignes avec le ctrlrange supérieur à 0,23. Ensuite, sous-ensemble dans une autre table, puis utilisez cette table pour sélectionner le reagentkit_id dans la table d'origine ?Re : Sélectionner des lignes, puis sélectionner davantage en fonction de celaBonne idée.
j'ai essayé ça
dt = Current Data Table();
dt << select where( :ctrlrange > 0.23 );
h = Column( dt, "reagentkit_id" ) << get Values;
dt_rgt = dt << Summary(
Group( :reagentkit_id ),
N Catagories( :reagentkit_id ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 1 )
);
dt_rgt << select where( Contains( h, :reagentkit_id ) );
Il a créé un tableau récapitulatif qui a été lié. Mais il a sélectionné toutes les lignes de la table de données d'origine. Pas kust les lignes de données qui avaient le reagentkit_id qui a été sélectionné car l'un de ses : ctrlrange était supérieur à 0,23.
Si je commente dt_rgt << select where( Contient( h, :reagentkit_id ) ); Ça marche. Cela signifie que dans un petit tableau de 2 150 lignes, il sélectionne les 6 lignes dont la plage ctrl est supérieure à 0,23 et crée le tableau récapitulatif.
Re : Sélectionner des lignes, puis sélectionner davantage en fonction de celaSi la liste "h" est vraiment longue, alors ce sera un script très intensif. Je suggérerais que vous créiez un regroupement de table de données récapitulatives sur votre colonne :reagentkit_id. Assurez-vous que le "Lien vers la table de données d'origine" est sélectionné, puis sélectionnez toutes les lignes dans le tableau récapitulatif. Le lien vers le tableau d'origine forcera toutes les correspondances du tableau récapitulatif à être sélectionnées dans le tableau d'origine.Re : Sélectionner des lignes, puis sélectionner davantage en fonction de celaC'était une faute de frappe lorsque j'ai posté sur le forum.
j'essaie
dt = Current Data Table();
dt << select where( :ctrlrange > 0.23 );
h = Column( dt, "reagentkit_id" ) << get Values;
dt << select where( Contains( h, :reagentkit_id ) );
Si vous l'utilisez sur une table comportant plus de 2,9 millions de lignes, JMP ne répond pas.Je suppose que c'est un processus intensif
Re : Sélectionner des lignes, puis sélectionner davantage en fonction de celaJe crois que c'est ce que tu veux
dt=current data table();
// You have a typo.....you are specifying dr and it should be dt....I assume
//dr<<SELECT where="">0.23);
dt<</SELECT><SELECT where="">0.23);
h=Column(dt, "reagentkit_id")<<GET values=""></GET></SELECT>
Re : Sélectionner des lignes, puis sélectionner davantage en fonction de celaJ'ai vu le "développer" dans la sélection, mais je n'ai pas pu comprendre comment développer en fonction de la sélection précédente à partir d'une valeur dans une autre colonne de cette sélection.