<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo, ich versuche, mithilfe einer for-Schleife die Anzahl der Zeilen zu zählen, die die Kriterien in zwei Spalten erfüllen. Am Anfang meines Skripts (nicht gezeigt) verwende ich einen Dialog, um dem Benutzer die Auswahl von zwei Spalten zu ermöglichen, und dies endet in einer Liste (collist). Anschließend verwende ich jeweils ein assoziatives Array, um die eindeutigen Werte pro Spalte zu bestimmen. Ein zweiter Dialog ermöglicht es dem Benutzer, eine Teilmenge dieser eindeutigen Werte pro Spalte auszuwählen, die in einer anderen Liste (poschosen) landet. Das Problem, mit dem ich zu kämpfen habe, ist das Einfügen der Spalten aus collist in die Select-Where-Funktion. Ich habe eine Reihe verschiedener Versuche mit eval, expr, eval expr, parse usw. unternommen, um sie richtig einzufügen, aber ich kann einfach nicht den richtigen Weg finden. Ich hoffe, dass jemand Rat hat.
Hier ist mein Code, der für die Beispieldaten angepasst wurde: Beliebtheit von Kindern. Ich möchte die Werte (Zeile 14) School und Goals durch collist[1] bzw. collist[2] ersetzen. Danke im Voraus für Ihre Hilfe Elisabeth
dattable=Open( "$SAMPLE_DATA/Children's Popularity.jmp" );
poschosen={"Ridge","Sand","main","stop","Popular","Grades","stop"};
stoppos={4,7}; //determine the position of the separator "stop"
Test1pos=subtract(stoppos[1],1); //determine the # of school column values chosen
Test2posStart=add(stoppos[1],1); //determine where in the list the Goals column values start
collist={"School", "Goals"};
sumpositives=0;
For (i = 1, i <= Test1pos, i++, //loop through the chosen school column values
For(f=Test2posStart, f
dattable< & Goals==Poschosen);
num_selected=nrows(dattable<
sumpositives=sumpositives+num_selected; //add the current selection count to previous count
print(sumpositives); //should be 56 in this example
); //end of inner for loop
); //end of outer for loop
Ich habe ewig versucht, das herauszufinden, und habe schließlich diesen Thread gefunden. Danke schön!
Egal, ich habe es gerade herausgefunden (Natürlich gleich nachdem ich die Frage gepostet habe, nicht wahr) ... Zeile 14 funktioniert, wenn ich Folgendes mache:
dattable< & als Spalte(dattable,collist[2])==Poschosen);