2016-08-01 13 views
2

Ich muss eine Variable erstellen, die angibt, welcher Grundschule ein Schüler zugeordnet ist. Ich habe 5 Schulvariablen in einem Jahr für jeden Schüler. Die erste Schulvariable wird immer mit dem 5-stelligen Schulcode des Schülers ausgefüllt; Wenn ein Schüler 5 Schulen in einem Jahr besucht, sind alle 5 Variablen bevölkert; Wenn sie nur eine Schule besuchen, wird nur die erste Variable bevölkert. Ich habe auch entsprechende Variablen mit der Anzahl der Tage, die ein Schüler in jeder Schule war, maximal 180. Ich brauche eine Variable mit dem 5-stelligen Schulcode von der Schule, wo sie den größten Teil des Schuljahres besucht haben. Wenn sie nur eine Schule besuchten, sollte sie mit dieser Schule verbunden sein, unabhängig davon, wie viele Tage sie besuchten. Kann ich einen DO IF-Befehl und eine Schleife verwenden, um diese Variable zu erstellen? Die folgende Syntax ist nur für die erste Schule, die ineffizient ist und nicht ganz da ist, da sie keine Schüler erfasst, die unter der 90-Tage-Schwelle liegen (d. H. Nur eine Schule für weniger als 90 Tage besucht haben).Erstellen Sie eine Variable, um eine Verbindung mit einem maximalen Wert in SPSS zu halten.

Update 8/2: Ich muss tatsächlich Studenten erfassen, die nicht für 1/2 des Jahres (90 Tage) anwesend sind. Es könnte einen Schüler geben, der 5 Schulen besuchte, mit jeweils ein paar Tagen, und möglicherweise auch maximal 89. Also unabhängig davon, wie viele Tage ein Schüler die Schule besuchte, möchte ich ihn mit der Schule verbinden, die er besuchte die meisten. In Bezug darauf, ob ein Schüler für die gleiche Anzahl von Tagen an zwei Schulen teilnahm, ist die erste ausreichend. Danke für deine Antworten.




     DO IF (TotalMembership_1011_sum.1 >= 90). 
      RECODE SchCode_1011.1 (21 thru 93=Copy) INTO PrimarySchool_1011. 
     END IF. 
     VARIABLE LABELS PrimarySchool_1011 'primary school 2010-11 (90+ days membership)'. 
     EXECUTE. 



Antwort

0

Versuchen Sie folgendes:

compute PrimarySchool_1011=0. 
compute MaxEnroll=max(Membership_1011_1 to Membership_1011_5). 
do repeat days=Membership_1011_1 to Membership_1011_5/code=SchCode_1011_1 to SchCode_1011_5. 
     if PrimarySchool_1011=0 and days>=90 and days=MaxEnroll PrimarySchool_1011=code. 
end repeat. 
execute. 
VARIABLE LABELS PrimarySchool_1011 'primary school 2010-11 (90+ days membership)'. 

Ein paar Anmerkungen:

  1. Ich bin nicht sicher, ob aus Ihrer Erklärung, wie die 90 Tage Schwelle sollte umgesetzt werden. In dieser Syntax nehme ich die Zeile aus dem Spiel heraus, wenn keine der Schulen 90 Tage oder mehr hat (PrimarySchool_1011 erhält den Wert 0). Wenn Sie etwas brauchen anders bitte erklären.
  2. Sie müssen entscheiden, was in Fällen zu tun ist, in denen sich zwei Schulen die maximale Anzahl von Tagen teilen ( ). Die obige Syntax wählt das erste Vorkommen der maximalen Anzahl aus. Wenn Sie stattdessen die letzte Vorkommen holen möchten, können Sie diese anstelle der Zeile innerhalb der Wiederholungsschleife Verwenden:
    if days>=90 and days=MaxEnroll PrimarySchool_1011=code.
  3. Mit dem „TO“ Konvention (wie in SchCode_1011_1 TO SchCode_1011_5) funktioniert nur, wenn diese Variablen nacheinander sind in der Datei geordnet. Wenn dies nicht der Fall ist, geben Sie bitte alle ihre Namen an.
Verwandte Themen