„Ausgeschlossene“ Zeilen werden ignoriertHallo,
Ich versuche immer noch, über den JSL-„Buckel“ hinwegzukommen, also entschuldigen Sie die grundsätzliche Frage.
Das Thema:
– Ich habe eine Beispieltabelle, die Datensätze für drei Replikate mit den Beispielsuffixen a1, a2 und a3 enthält.
– Manchmal muss eines der Replikate auf den Status „Ausgeschlossen“ gesetzt werden (Beispiel unten ist a2)
- Ich schreibe ein Batch-Skript, das eine Tabelle öffnet und nur Berechnungssätze anwendet, die nicht ausgeschlossen wurden.
- Allerdings bin ich mit meinem Versuch (siehe unten) noch nicht am Ziel, da Daten von allen dreien noch berücksichtigt werden.
- Ich habe das Gefühl, dass eine „und“-Anweisung erforderlich sein könnte, um nicht ausgeschlossene Zeilen zu identifizieren und dann die Suche nach Suffixen anzuwenden.
Für jede Eingabe wäre ich sehr dankbar.
Danke 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"));
);
)
Qualitäts- und VerfahrenstechnikBetreff: „Ausgeschlossene“ Zeilen werden ignoriertWerfen Sie auf jeden Fall einen Blick auf die Tabulate-Plattform und die JSL-Zusammenfassungsfunktion. Ich denke, dass Sie mit beiden recht schnell eine Antwort erhalten.
Betreff: „Ausgeschlossene“ Zeilen werden ignoriertVielen Dank!
Ich werde es versuchen und sehen, wie es läuft.
Die ursprüngliche Absicht bestand lediglich darin, die Porosität aus einer Zeile für jeden Satz (a1, a2 und a3) zu ermitteln und den Mittelwert zu ermitteln. Die Porosität ist bei jeder Wiederholung gleich, es gibt jedoch keinen einfacheren Weg, nur drei verschiedene Punkte zu extrahieren und einen Durchschnitt zu ermitteln.
Nochmals vielen Dank für die Eingabe.
Neil
Betreff: „Ausgeschlossene“ Zeilen werden ignoriertHier ist ein aktualisiertes Skript, das jede Art in der Iris-Datentabelle durchgeht und den Mittelwert für die Zeilen berechnet, die diesen Kriterien entsprechen.Da ich jetzt jedoch besser verstehe, was Sie tun, würde ich die Sache wahrscheinlich anders angehen und stattdessen tabulate verwenden, um diese Werte zu finden.
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 mit tabellarischer Verwendung:
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")];Betreff: „Ausgeschlossene“ Zeilen werden ignoriertich h,
Vielen Dank für die Eingabe. Ich bin noch ein bisschen ein Neuling, habe mich aber mit dem Assoziativen-Array-Konzept beschäftigt. Der Code wird angezeigt und funktioniert bis zu „Get Keys“. Allerdings bin ich immer noch nicht sicher, wie ich die Informationen, die ich benötige, aus „speciesmatches“ abrufen kann, um die erforderlichen Berechnungen durchzuführen (die letzten 6 Zeilen sind aufgeführt). Ich habe ein Bild einer typischen Tabelle gemacht, die ausgeschlossene Mengen enthalten würde.
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]]);
Betreff: „Ausgeschlossene“ Zeilen werden ignoriertEs sieht so aus, als würden Sie die Liste der ausgeschlossenen Zeilen durchlaufen, dann aber jedes Mal die gleiche Analyse durchführen, die nirgendwo tatsächlich auf die Liste der ausgeschlossenen Zeilen verweist.Hier ist eine Möglichkeit, Ihr Problem zu lösen: Sie erhält übereinstimmende und ausgeschlossene Zeilen und entfernt dann einfach ausgeschlossene Zeilen aus der 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;