Ignorer les lignes "exclues"Bonjour,
J'essaie toujours de surmonter la "bosse" JSL, alors pardonnez la question fondamentale.
Le problème:
- J'ai un exemple de table qui contient des ensembles de données pour trois répétitions avec le suffixe d'échantillon a1, a2 et a3.
- Parfois, l'un des réplicats doit être défini sur l'état "Exclu" (l'exemple ci-dessous est a2)
- J'écris un script batch qui ouvrira une table et n'appliquera des calculs qu'aux ensembles qui n'ont pas été exclus.
- Cependant, je n'en suis toujours pas là avec ma tentative (illustrée ci-dessous) car les données des trois sont toujours à l'étude.
- J'ai l'impression qu'une instruction "et" peut être nécessaire pour identifier les lignes non exclues, puis appliquer la recherche de suffixes.
Toute contribution serait très appréciée.
Merci Neil
states = Current Data Table() << Get Row States();
For( i = 1, i <= N Rows( states ), i++,
rs = As Row State( states[i] );
if (Excluded(rs)==0,
a1 = dt << Get Rows Where(Contains(:Sample,"a1"));
a2 = dt << Get Rows Where(Contains(:Sample,"a2"));
a3 = dt << Get Rows Where(Contains(:Sample,"a3"));
);
)
Ingénierie de la qualité et des procédésRe : Ignorer les lignes "exclues"Jetez un coup d'œil à la fois à la plate-forme de tabulation et à la fonction de résumé JSL, je pense que les deux peuvent obtenir votre réponse assez rapidement.
Re : Ignorer les lignes "exclues"Merci beaucoup!
Je vais essayer et voir comment ça se passe.
L'intention initiale était simplement de prendre la porosité d'une ligne pour chaque ensemble (a1, a2 et a3) et d'obtenir la moyenne. La porosité est la même pour chaque répétition, mais n'a pas trouvé de moyen plus simple d'extraire seulement 3 points distincts et une moyenne.
Encore merci pour la contribution.
Neil
Re : Ignorer les lignes "exclues"Voici un script mis à jour qui parcourt chaque espèce dans la table de données de l'iris et calcule la moyenne des lignes correspondant à ces critères.Cela dit, maintenant que je comprends mieux ce que vous faites, je procéderais probablement différemment et utiliserais plutôt un tableau pour trouver ces valeurs.
Names default to here(1);
//Make a sample dataset with some excluded rows
dt = Open("$Sample_data/iris.jmp");
excluded rows to set = [ 4, 9, 52 ];
dt << Select Rows( excluded rows to set );
dt << Exclude(1);
species list = {"setosa", "versicolor", "virginica"};
//For each species
for(s=1, s<= n items (species list), s++,
//Find all matching rows and load in associative array, useful for Remove From function later
species matches = associative array(dt << Get Rows Where(:Species == species list[s]));
//get excluded rows
excluded rows = dt << get excluded rows();
//remove excluded rows from the list of rows matching the species
Remove From (species matches, excluded rows);
//get the matching rows as a list, use that to find which rows to average
mn = mean( :Sepal length[speciesmatches << get keys] );
//output averages to the log
write(species list[s] || " mean = " || char(mn) || "\!n")
);
Option utilisant le tableau :
Names default to here(1);
//Make a sample dataset with some excluded rows
dt = Open("$Sample_data/iris.jmp");
excluded rows to set = [ 4, 9, 52 ];
dt << Select Rows( excluded rows to set );
dt << Exclude(1);
//New column with the check for each value
New Column("Species_", Character, "Nominal", Formula(If(Contains(:Species, "se"), "se", Contains(:Species, "ve"), "ve", Contains(:Species, "vi"), "vi")));
//tabulate to find averages - script copied from 'source' of data table after selecting
//'make into data table' from tabulate platform, then inserted dt reference
dtTab = (dt << Tabulate(
Set Format( Mean( :Sepal length( 10, 4 ) ) ),
Add Table(
Column Table( Analysis Columns( :Sepal length ), Statistics( Mean ) ),
Row Table( Grouping Columns( :Species_ ) )
)
)) << Make Into Data Table;
//Now get values from the table
dtTab:"Mean(Sepal length)"n[dtTab << Get Rows Where(:Species_ == "se")];Re : Ignorer les lignes "exclues"euh,
Merci beaucoup pour la contribution. Je suis encore un peu novice, mais j'ai essayé le concept Associative Array. Le code est affiché et fonctionnera jusqu'à "Obtenir les clés". Cependant, je ne sais toujours pas comment récupérer les informations dont j'ai besoin à partir des "correspondances d'espèces" pour effectuer les calculs nécessaires (6 dernières lignes répertoriées). J'ai pris une image d'une table typique qui contiendrait des ensembles exclus.
Neil
dt = Open( path );
// Find row that were excluded and load into list
Exc_row = dt << Get Excluded Rows;
dt << Select Rows( Exc_row );
dt << Exclude(1);
//Find all matching rows and load in associative array, useful for Remove From function later
species matches = associative array(dt << Get Rows Where(Contains(:Sample,"a1") |Contains(:Sample,"a2") |Contains(:Sample,"a3")));
//get excluded rows
Exc_row = dt << get excluded rows();
//remove excluded rows from the list of rows matching the species
Remove From (species matches, Exc_row);
//get the matching rows as a list
speciesmatches << get keys;
// What needs to be done to get mean of three (or 2 sets in the case of exclusion see table image)
a1 = dt << Get Rows Where(Contains(:Sample,"a1"));
a2 = dt << Get Rows Where(Contains(:Sample,"a2"));
a3 = dt << Get Rows Where(Contains(:Sample,"a3"));<BR />
c1 = Column("Image A pore area (%)");
mean1 = Mean(c1[a1[1]], c1[a2[1]], c1[a3[1]]);
Re : Ignorer les lignes "exclues"Il semble que vous parcouriez la liste des lignes exclues, mais que vous effectuiez la même analyse à chaque fois, ce qui ne fait en fait référence nulle part à la liste des lignes exclues.Voici une façon qui pourrait résoudre votre problème, qui obtient des lignes correspondantes et des lignes exclues, puis supprime simplement les lignes exclues de la liste.
Names default to here(1);
//Make a sample dataset with some excluded rows
dt = Open("$Sample_data/iris.jmp");
excluded rows to set = [ 4, 9, 52 ];
dt << Select Rows( excluded rows to set );
dt << Exclude(1);
//Find all matching rows and load in associative array, useful for Remove From function later
species matches = associative array(dt << Get Rows Where(:Species == "setosa"));
//get excluded rows
excluded rows = dt << get excluded rows();
//remove excluded rows from the list of rows matching the species
Remove From (species matches, excluded rows);
//get the matching rows as a list
speciesmatches << get keys;