Ich habe eine Tabelle namens dt. Ich nehme die eindeutigen Werte einiger Spalten und erstelle das folgende Menü, das dem Endbenutzer die Möglichkeit gibt, die dt-Tabelle basierend auf den Werten der Spalten zu filtern und eine Teilmenge davon zu verwenden.

Allerdings ist es riskant, die eindeutigen Werte der Spalte zu übernehmen, da Sie am Ende möglicherweise eine Attributkombination auswählen, die in der Tabelle nicht vorhanden ist.
Gibt es eine Möglichkeit, dieses Menü interaktiv oder dynamisch zu gestalten, sodass es die verfügbaren Auswahlmöglichkeiten einschränkt, während der Endbenutzer seine Auswahl trifft?
Gibt es im Allgemeinen eine Möglichkeit, das Problem zu lösen, dass am Ende eine leere Tabelle übrig bleibt, weil der ursprüngliche Datensatz nicht alle Kombinationen der eindeutigen Werte der Attribute enthält?
Sie könnten versuchen, einen bedingten Datenfilter zu verwenden, aber das könnte Ihr Layout durcheinanderbringen bzw. etwas zusätzliche Arbeit erfordern, um es ähnlich aussehen zu lassen.
Hier ist ein kurzes Beispiel. Ich würde vorschlagen, die Referenzierung robuster zu gestalten und möglicherweise lokale Datenfilter anstelle von globalen zu verwenden. Außerdem sollten Sie dies parametrisieren (Umbruch, Anweisungen, ...)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Animals.jmp");
nw = New Window("",
V List Box(align("center"),
Text Box("Animals Study Evaluation", << Set Base Font("Title")),
Text Box("Add-in version 1.0", << Set Base Font("Heading")),
Text Box("Documentation report: xxxxxx", << Set Base Font("Heading")),
Panel Box("Study Selections",
Button Box("Start Over", f << Clear);
f = dt << Data Filter(
Conditional,
Show Controls(0),
Show Modes(0),
Show Histograms and Bars(0),
Add Filter(
columns(:season, :species, :subject),
Where(:season == "fall"), // force conditional filter order
Where(:species = "COYOTE"),
Where(:subject= "1"),
Display(:season, N Items(4)),
Display(:species, N Items(2), "List Display"),
Display(:subject, N Items(3), "List Display")
)
)
)
)
);
Window("")["Data Filter",BorderBox(6)] << Sib Prepend(
V List Box(
Text Box("Selection of Seasons", << Set Font Size(12), << Set Font Style("Bold Italic")),
Text Box("Please select which seasons to use for the analysis. Multiple seasons can be selected by holding 'ctrl' down while pressing multiple seasons.", << Set Wrap(400))
)
);
Window("")["Data Filter",BorderBox(6)] << Sib Append(Spacer Box(Size(0, 20)));
Window("")["Data Filter",BorderBox(7)] << Sib Prepend(
V List Box(
Text Box("Selection of Species", << Set Font Size(12), << Set Font Style("Bold Italic")),
Text Box("Please select which Species to use for the analysis. Multiple Species can be selected by holding 'ctrl' down while pressing multiple Species.", << Set Wrap(400))
)
);
Window("")["Data Filter",BorderBox(7)] << Sib Append(Spacer Box(Size(0, 20)));
Window("")["Data Filter",BorderBox(8)] << Sib Prepend(
V List Box(
Text Box("Selection of Subjects", << Set Font Size(12), << Set Font Style("Bold Italic")),
Text Box("Please select which Subjects to use for the analysis. Multiple Subjects can be selected by holding 'ctrl' down while pressing multiple Subjects.", << Set Wrap(400))
)
);
Window("")["Data Filter",BorderBox(3)] << Visibility("Collapse");
Window("")["Data Filter",CheckBoxBox(1)] << Visibility("Collapse");
Window("")["Data Filter",BorderBox(1)] << Visibility("Collapse");
nw[Outline Box(1)] << Set Title("");
// To force the order of conditional filtering
// https://community.jmp.com/t5/JMP-Wish-List/Option-to-make-Conditional-Data-Filter-work-from-top-to-bottom/idi-p/746949
f << (Filter Column(:subject) << Clear Selection);
f << (Filter Column(:species) << Clear Selection);
f << (Filter Column(:season) << Clear Selection);

Es gibt auch einige Stellen, an denen JMP so etwas verwendet (z. B. Sample Index), aber sie haben möglicherweise auch Zugriff auf einige bessere Implementierungen als wir.
Ist es möglich, „oder“-Anweisungen zwischen zwei Bedingungen der Datenfilterung zu verwenden? Der bedingte Datenfilter verwendet „und“-Anweisungen und filtert die Daten dynamisch heraus. Aber was ist, wenn meine Bedingungen wie folgt lauten:
Bedingung_der_Spalte1 und (Bedingung2_der_Spalte2 oder Bedingung3_der_Spalte3)
Möglicherweise nicht möglich bei Verwendung bedingter Datenfilter