Erstellen Sie ein assoziatives Array aus eindeutig ausgewählten Zeilen und ZeilennummernHallo zusammen,
Ich habe eine Tabelle, in der ich Zeilen ausgewählt habe, in denen das Thema Naturwissenschaften oder Mathematik ist (mithilfe der Funktion „Where auswählen“). Jetzt möchte ich ein assoziatives Array erstellen, das die Zeilennummer aller ausgewählten Einträge mit eindeutigen Einträgen einer bestimmten Spalte speichert.
Danach möchte ich eine Schleife für alle Schlüssel des assoziativen Arrays starten. Dadurch werden die Zeilen von key[i] bis Key[i+1] für jeden Wert untergeordnet.
Zum Beispiel:
| Zeilennummer | Student | Reihenfolge | Thema |
| 1 | A | 1 | Wirtschaft |
| 2 | A | 2 | Wissenschaft |
| 3 | A | 4 | Physik |
| 4 | A | 5 | Mathematik |
| 5 | A | 2 | Wissenschaft |
| 6 | A | 4 | Chemie |
| 7 | A | 6 | Wissenschaft |
| 8 | A | 2 | Mathematik |
| 9 | A | 1 | Sozial |
*Zeilen in blauer Farbe, ich habe sie mit der Funktion „Wo auswählen“ ausgewählt.
- Ich möchte Variablen erstellen, die assoziative Arrays speichern: ["Science" => {2,5,7}], "Math" => {4,8}].
- Dann möchte ich eine Schleife für beide Schlüssel erstellen, die eine Teilmenge bildet und drei Tabellen generiert.
- Tabelle 1: Von Zeile 2 bis 5
- Tabelle 2: Von Zeile 5 bis 7
- Tabelle 3: Von Zeile 4 bis 8
Bitte helfen Sie mir, wie ich es lösen kann.
Danke 
Betreff: Erstellen Sie ein assoziatives Array aus eindeutig ausgewählten Zeilen und ZeilennummernUm die Teilmengentabellen zu erhalten, die Sie meiner Meinung nach benötigen, ändern Sie den letzten Teil von Ians Code so, dass er wie folgt aussieht. Verschachteln Sie insbesondere die (neue) j-indizierte for-Schleife innerhalb der i-indizierten for-Schleife von Ian.
Prost,
Brady
// Build associative arrays from current key list
subject_aa = associative array();
for (i = 1, i <= nitems(key_list), i++,
found_rows = dt << get rows where(as column(dt, "Subject") == key_list[i]);
subject_aa[key_list[i]] = found_rows;
for(j = 1, j<=nitems(found_rows)-1, j++,
dt << subset(rows(found_Rows[j] :: found_Rows[j+1]));
)
);
show(subject_aa);
Betreff: Erstellen Sie ein assoziatives Array aus eindeutig ausgewählten Zeilen und Zeilennummern@pmroz hat die meiste Arbeit erledigt, was man hinzufügen kann:
NamesDefaultToHere(1);
dt = New Table( "Subjects",
Add Rows( 9 ),
New Column( "Student",
Character( 16 ),
"Nominal",
Set Values( {"A", "A", "A", "A", "A", "A", "A", "A", "A"} )
),
New Column( "Sequence",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 4, 5, 2, 4, 6, 2, 1] )
),
New Column( "Subject",
Character( 16 ),
"Nominal",
Set Values(
{"Economics", "Science", "Physics", "Math", "Science", "Chemistry", "Science", "Math", "Social"}
)
)
);
// Make any row selection (in this case, the 'blue' rows)
dt << selectRows({2, 4, 5, 7, 8 });
// Get key list from the current row selection
subjectVals = Column(dt, "Subject")[dt << getSelectedRows];
key_list = AssociativeArray(subjectVals) << getKeys;
// Build associative arrays from current key list
subject_aa = associative array();
for (i = 1, i <= nitems(key_list), i++,
found_rows = dt << get rows where(as column(dt, "Subject") == key_list[i]);
subject_aa[key_list[i]] = found_rows;
);
show(subject_aa);
Klicken Sie mit der rechten Maustaste auf die JSL-Schlüsselwörter im Editor und führen Sie „Help Scripting Index“ aus, um weitere Informationen zu erhalten.
Anhand Ihres Beispiels war mir die Spezifikation der drei Tabellen, die Sie angeblich benötigen, unklar, sobald Sie die assoziativen Arrays haben.
Betreff: Erstellen Sie ein assoziatives Array aus eindeutig ausgewählten Zeilen und Zeilennummern@pmroz Danke für Ihre Antwort.
Mein Datensatz ist sehr umfangreich und die Verwendung dieses Ansatzes kann mehr Zeit in Anspruch nehmen.
Außerdem ist meine Schlüsselliste nicht festgelegt. Sie hängt von der Bedingung ab, ob sie einen bestimmten Text enthält oder nicht.Betreff: Erstellen Sie ein assoziatives Array aus eindeutig ausgewählten Zeilen und ZeilennummernDieser Code soll Ihnen den Einstieg erleichtern.
dt = New Table( "Subjects", Add Rows( 9 ),
New Column( "Student", Character( 16 ), "Nominal",
Set Values( {"A", "A", "A", "A", "A", "A", "A", "A", "A"} ) ),
New Column( "Sequence", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 4, 5, 2, 4, 6, 2, 1] ) ),
New Column( "Subject", Character( 16 ), "Nominal",
Set Values( {"Economics", "Science", "Physics", "Math", "Science", "Chemistry",
"Science", "Math", "Social"} ) )
);
key_list = {"Science", "Math"};
subject_aa = associative array();
for (i = 1, i <= nitems(key_list), i++,
found_rows = dt << get rows where(as column(dt, "Subject") == key_list[i]);
subject_aa[key_list[i]] = found_rows;
);
show(subject_aa);