JMP Tabellarisieren nach Liste der Spaltennamen in JSLHallo,
Ich habe eine Tabelle und möchte sie nach Spalte "Student", Spalte "Fach" und Spalte "Klasse" tabellieren, aber Spalte "Fach" und Spalte "Klasse" müssen nicht in den Daten verfügbar sein.
Wenn es die Spalte "Fach", aber nicht die Spalte "Klasse" hat, sollte es nach Spalte "Student" und Spalte "Fach" tabelliert werden.
Wenn es die Spalte "Klasse", aber nicht die Spalte "Fach" hat, sollte es nach Spalte "Student" und Spalte "Klasse" tabelliert werden.
Wenn es alle Spalten hat, sollte es nach allen drei Spalten tabelliert werden. Nachfolgend finden Sie einige Beispiele.
Beispiel 1: (Es hat sowohl die Spalte "Fach" als auch die Spalte "Klasse")
Eingang:
| Klasse | Student | Markierungen | Thema |
| 1 | A | 10 | Mathematik |
| 2 | A | 15 | Wissenschaft |
| 3 | A | 12 | Wissenschaft |
| 1 | B | 15 | Mathematik |
| 2 | B | 12 | Wissenschaft |
Ausgang:
| Klasse | Student | Thema | max (Marken) |
| 1 | A | Mathematik | 10 |
| 2 | A | Wissenschaft | 15 |
| 3 | A | Wissenschaft | 12 |
| 1 | B | Mathematik | 15 |
| 2 | B | Wissenschaft | 12 |
Beispiel 2: (Es hat die Spalte "Klasse", aber nicht die Spalte "Fach")
Eingang:
| Klasse | Student | Markierungen |
| 1 | A | 10 |
| 2 | A | 15 |
| 3 | A | 12 |
| 1 | B | 15 |
| 2 | B | 12 |
Ausgang:
| Klasse | Student | max (Marken) |
| 1 | A | 10 |
| 2 | A | 15 |
| 3 | A | 12 |
| 1 | B | 15 |
| 2 | B | 12 |
Beispiel 3: (Es hat die Spalte "Fach", aber nicht die Spalte "Klasse")
Eingang:
| Student | Markierungen | Thema |
| A | 10 | Mathematik |
| A | 15 | Wissenschaft |
| A | 12 | Wissenschaft |
| B | 15 | Mathematik |
| B | 12 | Wissenschaft |
Ausgang:
| Student | Thema | max (Marken) |
| A | Mathematik | 10 |
| A | Wissenschaft | 15 |
| B | Mathematik | 15 |
| B | Wissenschaft | 12 |
Bitte helfen Sie mir, dieses Problem zu lösen.
Danke
Betreff: JMP Tabellieren nach Liste der Spaltennamen in JSLDanke @tsnelsonBetreff: JMP Tabellieren nach Liste der Spaltennamen in JSLSuchst du danach???
names default to here(1);
dt=current data table();
// The list of columns to look for
theList={"Class","Student","Subject", "xxxxxx","xxxxxx"};
allColList = dt << get column names(string);
// Remove any columns from theList that are not in the data table
For(i=n items(theList),i>=1, i--,
If(n rows(loc(allColList,theList[i]))==0,
remove from(theList,i,1)
)
);
// Run the tabulate
Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Analysis Columns( :Marks ), Statistics( Max ) ),
Row Table( Grouping Columns( eval(theList) ) )
)
);
Wenn die unterschiedlichen Zielspalten andere Rollen als Gruppierungsspalten spielen, müssen Sie die Codebuchhaltung für die unterschiedliche erforderliche Eingabesyntax entwickeln.
Betreff: JMP Tabellieren nach Liste der Spaltennamen in JSL@txnelson Ich habe 5 Spalten wie Spalte "Klasse" und Spalte "Betreff", die in den Daten vorhanden sein können oder nicht. Um nun zu tabellieren, muss ich alle Permutationen von IF-Bedingungen angeben, und jede hätte einen separaten Tabellencode. Dadurch wird der Code zu chaotisch.
Stattdessen, wenn wir es mit einer einzelnen Tabulate-Funktion tun können, in der wir die gesamte Liste der Spalten angeben und nur die Spalten verwenden, die in den Daten verfügbar sind.
DankeBetreff: JMP Tabellieren nach Liste der Spaltennamen in JSLDas Komprimieren des Tabellencodes auf einen Codesatz würde den Code weitaus komplexer machen.
Wenn Sie sagen, dass Sie viel mehr Spalten haben, können Sie das näher erläutern?
Betreff: JMP Tabellieren nach Liste der Spaltennamen in JSL@txnelson Danke für Ihre Antwort.
Können wir dieses Problem mit einem einzelnen Block eines tabellarischen Skripts lösen, da ich in meinem ursprünglichen Datensatz viele solcher Spalten habe.Betreff: JMP Tabellieren nach Liste der Spaltennamen in JSLFühren Sie jedes der 3 Szenarien in einer Beispieldatentabelle aus und speichern Sie jedes der Skripts aus jeder Ausführung in einem Skriptfenster.Nehmen Sie dann jedes der entsprechenden Skripte und fügen Sie sie in das folgende Skript an der vorgesehenen Position ein
names default to here(1);
dt= current data table();
colNames = dt << get column names(string);
// Here is the IF() structure to add in the tabulate code to
If( N Rows(loc(colNames, "Subject" ) ) > 0 & N Rows(loc(colNames, "Class" ) ) > 0,
// Add in the tabulate code that has Student, Subject and Class
,
N Rows(loc(colNames, "Subject" ) ) > 0,
// Add in the tablulate code that has just Student and Subject
,
N Rows(loc(colNames, "Class" ) ) > 0,
// Add in the tablulate code that has just Student and Class
);