Nichtleere Zellen zählen in SPSS

Alles rund um SPSS Syntax und Programmierung.

Nichtleere Zellen zählen in SPSS

Beitragvon miner » Do 21. Sep 2017, 01:21

Hallo,

wie ich in SPSS leere Zellen (also systemdefinierte Missings) zählen kann weiß ich. Nämlich so:

Code: Alles auswählen
count var1 = var2 to var10(sysmis).
execute.


Allerdings will ich die nicht-leeren (!) Zellen zählen. Eine Liste von Werten die gezählt werden sollen, kann/möchte ich nicht angeben, da es viel zu viele Werte sind, die auftreten können und die somit gezählt werden sollen (mehrere hundert unterschiedliche Werte).

Zwei Lösungen die ich schon probiert habe (beide führen leider zu Fehlermeldungen, den Unterschied zur oben stehenden funktionierenden Lösung zur Zählung von leeren Zellen habe ich jeweils rot markiert):


count var1 = var2 to var10(~sysmis).
execute.

count var1 = var2 to var10(~sysmis()).
execute.



Kennt jemand eine Lösung?



Besten Dank und Grüße
Miner
miner
 
Beiträge: 86
Registriert: Do 12. Sep 2013, 16:54
Danke gegeben: 6
Danke bekommen: 0 mal in 0 Post

Re: Nichtleere Zellen zählen in SPSS

Beitragvon ponderstibbons » Do 21. Sep 2017, 11:04

Du kannst auch COMPUTE und eine der dortigen Funktionen benutzen.
ponderstibbons
 
Beiträge: 2477
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 1
Danke bekommen: 255 mal in 254 Posts

Re: Nichtleere Zellen zählen in SPSS

Beitragvon miner » Do 21. Sep 2017, 14:42

ponderstibbons hat geschrieben:Du kannst auch COMPUTE und eine der dortigen Funktionen benutzen.


Welche der dortigen Funktionen denn? Mit If-Anweisungen würde es gehen, aber womöglich mit größeren Umständen. Im Beispiel sind es nur zehn Variablen (aus Vereinfachungsgründen), im echten Datensatz aber Dutzende (es können auch mal hunderte sein). If in Verbindung mit loop könnte es einfacher machen, aber mit loop habe ich bisher noch nie gearbeitet. Fände das auch recht umständlich für so eine kleine Anforderung.

Mit dem Count-Befehl fällt mir noch diese Lösung ein:

Code: Alles auswählen
count Hilfsvariable = var1 to var10(sysmis).
compute Zielvariable = 10 - Hilfsvariable.
execute.


(Ich hätte aber vermutet, man müsse so eine Mini-Anforderung auch mit lediglich einer einzigen Code-Zeile lösen können.)
miner
 
Beiträge: 86
Registriert: Do 12. Sep 2013, 16:54
Danke gegeben: 6
Danke bekommen: 0 mal in 0 Post

Re: Nichtleere Zellen zählen in SPSS

Beitragvon ponderstibbons » Do 21. Sep 2017, 15:16

NVALID
ponderstibbons
 
Beiträge: 2477
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 1
Danke bekommen: 255 mal in 254 Posts

Re: Nichtleere Zellen zählen in SPSS

Beitragvon miner » Do 21. Sep 2017, 17:35

Hi ponderstibbons,

Deine Beiträge sind kurz und hilfreich!;) NVALID kannte ich noch nicht. Habe NVALID jetzt Dank Deinem Hinweis in mein Reppertoire aufgenommen!

Hinsichtlich des aktuellen Problems habe ich mittlerweile gemerkt, dass mir mit dem Zählen der validen Werten noch nicht geholfen ist. Eigentlich dürfen nur alle UNTERSCHIEDLICHEN validen Werte gezählt werden.

Für z.B. diesen Datensatz:

Code: Alles auswählen
ID   var1   var2   var3  var4
1     10    10     20    10
2     20    20     20    10
3     10    20     30    20
4     miss  10     20    30
...


Müssten sich nach zählen der validen UNTERSCHIEDLICHEN Werte folgendes ergeben: (neu berechnet werden soll also die neue Variable ganz rechts außen)

Code: Alles auswählen
ID   var1   var2   var3  var4   unterschiedlicheValideWerte
1     10    10     20    10     2
2     20    20     20    10     2
3     10    20     30    20     3
4     miss  10     20    30     3
...



Ich habe es jetzt mit einem Work-around probiert, nämlich so:

Code: Alles auswählen
count Hilfsvariable_1 = var1 to var4(10).
count Hilfsvariable_2 = var1 to var4(20).
count Hilfsvariable_3 = var1 to var4(30).
execute.

count unterschiedlicheValideWerte = Hilfsvariable_1 to Hilfsvariable_5(1 thru highest).
execute.


Bei diesem Beispiel können nur drei unterschiedliche Werte auftreten (nämlich 10,20 und 30). Dadurch ist der Code relativ kurz. Im echten Datensatz sind es aber mehrere dutzend Werte (theoretisch könnten es auch mehrere hunderte Werte sein). Der Code führt zwar zum erwünschten Ergebnis, ist aber relativ lang. Und die Lösung ist nicht gerade elegant.


Frage: Gibt es nicht einen Befehl, der das sehr viel einfacher macht? Also einen Befehl ZähleAlleUnterschiedlichenValidenWerte? :)


Besten Dank und Grüße
Miner
miner
 
Beiträge: 86
Registriert: Do 12. Sep 2013, 16:54
Danke gegeben: 6
Danke bekommen: 0 mal in 0 Post

Re: Nichtleere Zellen zählen in SPSS

Beitragvon ponderstibbons » Fr 22. Sep 2017, 11:22

Unter anderem Namen abspeichern.
Mit Umstrukturieren ins lange Format bringen und dabei die Werte von v1 bis v4 zu einer Variablen (nennen wir sie mal "wert") zusammenfassen.
Nach id und wert sortieren.
In Fälle auswählen Bedingung (id ne LAG(id)) OR (wert ne LAG(wert)). Alle anderen löschen lassen (SELECT IF).
In Aggregieren id als break-Variable setzen und "Anzahl der Fälle" (=Anzahl unterschiedlicher Werte innerhalb einer id) anfordern.
Mit Fälle auswählen nur die die Fälle beibehalten, in denen (id ne LAG(id)) . Alle anderen löschen lassen (SELECT IF).

Der Rest ist Abspeichern und "Dateien zusammenfügen".
ponderstibbons
 
Beiträge: 2477
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 1
Danke bekommen: 255 mal in 254 Posts

Re: Nichtleere Zellen zählen in SPSS

Beitragvon miner » Fr 22. Sep 2017, 15:07

Besten Dank, ich muss dass alles in Ruhe ausprobieren.
miner
 
Beiträge: 86
Registriert: Do 12. Sep 2013, 16:54
Danke gegeben: 6
Danke bekommen: 0 mal in 0 Post


Zurück zu SPSS Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste