"Ausgeschlossene" Zeilen ignorierenHallo,
Ich versuche immer noch, über den "Buckel" der JSL hinwegzukommen, also verzeihen Sie die grundlegende Frage.
Die Angelegenheit:
- 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 in den Status "Ausgeschlossen" versetzt werden (Beispiel unten ist a2).
- Ich schreibe ein Batch-Skript, das eine Tabelle öffnet und nur Sätze von Berechnungen anwendet, die nicht ausgeschlossen wurden.
- Ich bin jedoch bei meinem Versuch (siehe unten) immer noch nicht dabei, da Daten von allen drei immer noch berücksichtigt werden.
- Ich bin der Meinung, dass eine "und" -Anweisung erforderlich sein kann, um nicht ausgeschlossene Zeilen zu identifizieren und dann nach Suffixen zu suchen.
Jede Eingabe wäre 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"));
);
)
DatentabelleBetreff: Ignorieren von "ausgeschlossenen" ZeilenEs sieht so aus, als würden Sie die Liste der ausgeschlossenen Zeilen durchlaufen, dann aber jedes Mal dieselbe Analyse durchführen, die tatsächlich nirgendwo auf die Liste der ausgeschlossenen Zeilen verweist.Hier ist eine Möglichkeit, Ihr Problem zu lösen, bei der übereinstimmende Zeilen und ausgeschlossene Zeilen abgerufen und dann nur ausgeschlossene Zeilen aus der Liste entfernt werden.
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;Betreff: Ignorieren von "ausgeschlossenen" Zeilenich h,
Vielen Dank für die Eingabe. Ich bin immer noch ein Anfänger, habe aber das Assoziative Array-Konzept ausprobiert. Der Code wird angezeigt und funktioniert bis zu "Get Keys". Ich bin mir jedoch immer noch nicht sicher, wie ich die Informationen, die ich benötige, aus "Speziesmatches" abrufen kann, um die erforderlichen Berechnungen durchzuführen (letzte 6 Zeilen aufgelistet). Ich habe ein Bild einer typischen Tabelle aufgenommen, 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: Ignorieren von "ausgeschlossenen" ZeilenHier ist ein aktualisiertes Skript, das jede Art in der Iris-Datentabelle durchläuft und den Mittelwert für die Zeilen berechnet, die diesen Kriterien entsprechen.Das heißt, jetzt, da ich besser verstehe, was Sie tun, würde ich wahrscheinlich anders vorgehen und stattdessen tabellarisch 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 Tabellierung:
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: Ignorieren von "ausgeschlossenen" ZeilenVielen Dank!
Ich werde es versuchen und sehen, wie es geht.
Die ursprüngliche Absicht war nur, die Porosität aus einer Reihe für jeden Satz (a1, a2 und a3) zu nehmen und den Mittelwert zu erhalten. Die Porosität ist für jedes Replikat gleich, es gibt jedoch keinen einfacheren Weg, nur 3 verschiedene Punkte und Durchschnittswerte zu extrahieren.
Nochmals vielen Dank für die Eingabe.
Neil
Betreff: Ignorieren von "ausgeschlossenen" ZeilenSchauen Sie sich auf jeden Fall sowohl die tabellarische Plattform als auch die Funktion zum Zusammenfassen von JSL an. Ich denke, beide können Ihre Antwort ziemlich schnell erhalten.