Werte einer Variablen höher setzen// Werte löschen

Fragen und Diskussionen rund um die Arbeit mit SPSS. Für allgemeine Statistik-Themen, die nicht mit SPSS zusammenhängen, bitte das Statistik-Forum nutzen.
Antworten
stephi1011
Beiträge: 22
Registriert: 16.05.2011, 10:26

Werte einer Variablen höher setzen// Werte löschen

Beitrag von stephi1011 »

Hallo zusammen,

ich habe 2 Fragen:

1) Ich möchte die Werte einer Variablen alle um 6 nach unten setzen. Dafür möchte ich eine neue Variable generieren. ich weiß, dass ich durch den lag-Befehl Variablen höher setzen kann, aber ich weiß nicht den "Gegenbefehl". Kann mir jemand helfen?

2) Ich habe für jede ID 7 Erhebungen. In einer Variablen gibt es zum Teil mehrere Kreuze. Ich möchte eine neue Variable generieren, in der immer nur noch von jeder Id das Kreuz bleibt, das pro ID als erstes gesetzt wurde und die anderen sollen gelöscht werden.
Bsp:

Fall Nummer Variable x
1 1
1 2 X
1 3
1 4
1 5 X
1 6
1 7

Ich möchte die Variable "X" erneut als z.B. "X2" erstellen und dann soll nur das erste kreuz, dass in diesem Fall bei 2 ist stehen bleiben. Je nach Fall sind die Kreuze anders verteilt.


Ich wäre sehr dankbar.

Liebe Grüße,
Stephi
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

1) indem du den lag über die andere Variable rechnest

2) Hier fällt mir nur eine kompliziertere Lösung ein: Variable, die das X enthält als string abspeichern, dieser String Variablen über Substring das X auslesen, diese dann als Filterkriterium nehmen und über Sortieren die erste nehmen, alle anderen löschen.


Gruß
drfg2008
stephi1011
Beiträge: 22
Registriert: 16.05.2011, 10:26

Beitrag von stephi1011 »

Danke ersteinmal,

alsi als String abspeichern ist ja kein Problem-aber danach komm ich nicht recht weiter. Kannst du mir da noch ein Satz mehr zu sagen?

Liebe Grüße
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

wie sieht denn der Datensatz aus? So etwa ...

Code: Alles auswählen

DATA LIST FREE 
  / Fall (f8.2) Nummer (f8.2) Variable_X (A10).
BEGIN DATA
1 1 .
1 2 X
1 3 .
1 4 .
1 5 X
1 6 .
1 7 .
2 1 .
2 2 X
2 3 .
2 4 .
2 5 X
2 6 .
2 7 .
3 1 .
3 2 X
3 3 .
3 4 .
3 5 X
3 6 X
3 7 .
END DATA.

Diese Syntax ausführen. Steht das x in einer separaten Variablen?

Gruß
drfg2008
stephi1011
Beiträge: 22
Registriert: 16.05.2011, 10:26

Beitrag von stephi1011 »

Ja genauso sieht mein datensatz ungefähr aus und das x steht in einer seperaten Spalte.
Hast du eine Idee?

Liebe Grüße
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

Ja genauso sieht mein datensatz ungefähr aus

Genau oder ungefähr ?

Hier die Lösung:

Code: Alles auswählen

DATA LIST FREE
  / Fall (f8.2) Nummer (f8.2) Variable_X (A10).
BEGIN DATA
1 1 .
1 2 X
1 3 .
1 4 .
1 5 X
1 6 .
1 7 .
2 1 .
2 2 X
2 3 .
2 4 .
2 5 X
2 6 .
2 7 .
3 1 .
3 2 X
3 3 .
3 4 .
3 5 X
3 6 X
3 7 .
END DATA. 

IF  (Variable_X = "X") v001=$CASENUM.
EXECUTE.

SELECT IF (v001 > 0).
EXECUTE.

* Doppelte Fälle ermitteln.
SORT CASES BY Fall(A).
MATCH FILES
  /FILE=*
  /BY Fall
  /FIRST=PrimaryFirst
  /LAST=PrimaryLast.
DO IF (PrimaryFirst).
COMPUTE  MatchSequence=1-PrimaryLast.
ELSE.
COMPUTE  MatchSequence=MatchSequence+1.
END IF.
LEAVE  MatchSequence.
FORMAT  MatchSequence (f7).
COMPUTE  InDupGrp=MatchSequence>0.
SORT CASES InDupGrp(D).
MATCH FILES
  /FILE=*
  /DROP=PrimaryLast InDupGrp MatchSequence.
VARIABLE LABELS  PrimaryFirst 'Indicator of each first matching case as Primary'.
VALUE LABELS  PrimaryFirst 0 'Duplicate Case' 1 'Primary Case'.
VARIABLE LEVEL  PrimaryFirst (ORDINAL).
FREQUENCIES VARIABLES=PrimaryFirst.
EXECUTE.

FILTER OFF.
USE ALL.
SELECT IF (PrimaryFirst = 1).
EXECUTE.

Gruß
drfg2008
stephi1011
Beiträge: 22
Registriert: 16.05.2011, 10:26

Beitrag von stephi1011 »

Erstmal Vielen Dank für deine Mühe.

ich muss jedoch nochmal nachhaken-mein Datensatz umfasst insgesamt 20.000 Fälle -daher die Angabe "ungefähr" und die Jreute verteilen sich natürlich bei jeder Id unterschiedlich.

ich hab versucht die Syntax laufen zu lassen und bei

"IF (Variable_X = "X") v001=$CASENUM.

EXECUTE.

SELECT IF (v001 > 0)."

meine Variablennamen eingesetzt. Den oberen teil habe ich - wahrscheinlich fälschlicherweise- weggelasen. Da ich ja viel mehr Fälle habe...oder versteh ich es falsch?

Würd mich über eine erneute Hilfe freuen.

LG
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

der erste Teil des Programms dient nur zur Generierung des Datensatzes und muss natürlich weggelassen werden. Allerdings müssen sämtliche relevanten Variablennamen geändert werden:


Fall
Nummer
Variable_X

(mit Suche-Ersetze geht das ganz gut)


Eigentlich ist das Programm ganz einfach und auch über Windows Menüführung zu lösen, nämlich über „doppelte Fälle ermitteln“.

1. Schritt

IF (Variable_X = "X") v001=$CASENUM.
EXECUTE.

… generiert nur eine Fallvariable, dort, wo kein missing gesetzt ist.


2. Schritt

SELECT IF (v001 > 0).
EXECUTE.


… löscht alle auf missing gesetzte Fälle


3. Schritt

… jetzt werden alle doppelten Fälle ermittelt. Der erste angetroffene Fall wird als erster markiert (Programm stammt aus der Menüführung bei SPSS)

* Doppelte Fälle ermitteln.
SORT CASES BY Fall(A).
MATCH FILES
/FILE=*
/BY Fall
/FIRST=PrimaryFirst
/LAST=PrimaryLast.
DO IF (PrimaryFirst).
COMPUTE MatchSequence=1-PrimaryLast.
ELSE.
COMPUTE MatchSequence=MatchSequence+1.
END IF.
LEAVE MatchSequence.
FORMAT MatchSequence (f7).
COMPUTE InDupGrp=MatchSequence>0.
SORT CASES InDupGrp(D).
MATCH FILES
/FILE=*
/DROP=PrimaryLast InDupGrp MatchSequence.
VARIABLE LABELS PrimaryFirst 'Indicator of each first matching case as Primary'.
VALUE LABELS PrimaryFirst 0 'Duplicate Case' 1 'Primary Case'.
VARIABLE LEVEL PrimaryFirst (ORDINAL).
FREQUENCIES VARIABLES=PrimaryFirst.
EXECUTE.


4. Schritt

nur die als primär gekennzeichneten Fälle verbleiben im Datensatz

FILTER OFF.
USE ALL.
SELECT IF (PrimaryFirst = 1).
EXECUTE.


Gruß
drfg2008
stephi1011
Beiträge: 22
Registriert: 16.05.2011, 10:26

Beitrag von stephi1011 »

Vielen Dank für deine Erklärung- hat super geklappt :)

Liebe Grüße
Anzeige:Statistik und SPSS: Die besten Bücher
Als Buch oder E-Book - Jetzt bestellen
spss datenanalyse
SPSS - Moderne Datenanalyse - Jetzt bestellen!
statistik datenanalyse
Statistik - Der Weg zur Datenanalyse - Jetzt bestellen!
Antworten