Einzelne Fälle in Gruppen in Gruppen identifizieren&filtern

Alles rund um SPSS Syntax und Programmierung.

Einzelne Fälle in Gruppen in Gruppen identifizieren&filtern

Beitragvon Tianchris » Mi 18. Sep 2019, 17:11

Hallo zusammen,

ich habe mal wieder ein Problem in meinem Datensatz.
In meinem Datensatz habe ich innerhalb einer Gruppe (Kürzel einer Filale, die mehrfach im Datensatz auftaucht), mehrere unterschiedliche Kunden einkaufen (alle mit einer ID versehen). Der Datensatz besteht also aus mehreren Fällen, die u.a. durch mehrere Filalen unterschieden werden können, in den mehrere Kunden einkaufen waren.
Nun möchte ich innerhalb einer Filale jeweils einen Kunden identifizieren, wichtig ist nur, dass ich weiß welche Kunden (nicht wieviel Produkte in dieser Filale) alle in der Filale einkaufen waren und ich sagen kann, in welchen Filalen der Kunde einkaufen war. Unwichtig ist, was er eingekauft hat, sondern nur, dass er in der Filale einkaufen war. Am Ende sollen alle Fälle gefiltert werden, in denen der Kunde mehrfach innerhalb einer Filale einkaufen war.

Ich hoffe ich konnte das Problem beschreiben und freue mich über Kommentare.

Viele Grüße
Tianchris
Tianchris
 
Beiträge: 9
Registriert: Do 15. Aug 2019, 14:32
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Einzelne Fälle in Gruppen in Gruppen identifizieren&filt

Beitragvon ponderstibbons » Mi 18. Sep 2019, 18:05

Funktion Daten->Aggregieren, als break-Variablen Filiale und Kundenid, Häkchen
bei "Anzahl der Fälle" setzen. Die neue Variable zum Filtern verwenden.

Mit freundlichen Grüßen

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

Re: Einzelne Fälle in Gruppen in Gruppen identifizieren&filt

Beitragvon Tianchris » Do 19. Sep 2019, 10:44

Vielen Dank für die schnelle Beantwortung.
Es hat genau die Fälle markiert, in denen eine Person mehrfach in einer Filale einkaufen war. Das ist schon mal super!
Ich habe dann gemerkt, dass ich mich wohl etwas missverständlich ausgedrückt bzw. mein letzter Satz (Am Ende sollen alle Fälle gefiltert werden, in denen der Kunde mehrfach innerhalb einer Filale einkaufen war.) hat mein Ziel nicht richtig wiedergegeben.

Daher nochmal folgende Erklärung:
In den Fällen, in denen Personen mehrfach in einer Filale einkaufen waren, möchte ich gerne einen zufälligen Einkauf behalten. Der Datensatz soll nachher also alle Filalen anzeigen, in denen eingekauft wurde und jede Filale soll nicht die Anzahl an Einkäufen einer Person beinhalten, sondern nur die Personen die dort einkaufen waren, unabhängig von der Anzahl der Einkäufe.
Am Beispiel erklärt:

ID Filale
1B Rst
1B Rst
1C Rst
1C Rst
1C Bst
1C Bst
1D Tst
1F Tst
1H Tst
1H Tst

Ich möchte jetzt gerne 1x1B (Rst), 2x1C (1xRst und 1xBst), 1x1D (Tst), 1x1F (Tst) und 1x1H (Tst).
Wenn ich jetzt "nur" die vorher beschriebene Break-Variable habe, würde ich bei der Anzahl 2 gerne einen zufälligen Fall behalten.
Für mich ist das Problem, dass ich nicht - oder es gerade nicht umsetzen kann/weiß nicht wie ich es umsetzen soll - eine zufällige Person innerhalb einer Filale behalten kann und die mehrfach Erfassungen herausfiltere.

Mein Versuch, wäre eine zufällige Zahl generieren:
COMPUTE Zufallszahl=RV.UNIFORM(0,100).
EXECUTE.

Und dann mit der vorher erstellten N_BREAK-Variable zu arbeiten:
sort cases Filalenr ID Zufallszahl.
USE ALL.
COMPUTE filter = (N_BREAK ne LAG (N_BREAK) OR $casenum=1).
VARIABLE LABELS filter 'F-Nr-Zufall'.
VALUE LABELS filter 0 'Not Selected' 1 'Selected'.
FORMATS filter (f1.0).
FILTER BY filter.
EXECUTE.

Doch leider bekomme ich nicht das richtige Ergebnis, weil ich irgendwo falsch sortiere oder ...
Kann mir jemand helfen?

Viele Grüße
Tianchris

Ich habe eine Lösung hinbekommen. Ich habe den Datensatz nach der Break-Variable aufgeteilt (eine Datei in dem die Break Variable 1 beträgt und ein anderer Datensatz mit in dem die Break Variabl > 1 ist).
Im Datensatz der Break-V > 1, habe ich folgende Syntax angewendet:
sort cases Filalenr ID.
USE ALL.
COMPUTE filter = (Filalenr ne LAG (Filalenr) AND ID ne LAG (ID) OR $casenum=1).
VARIABLE LABELS filter 'F-Nr-Zufall'.
VALUE LABELS filter 0 'Not Selected' 1 'Selected'.
FORMATS filter (f1.0).
FILTER BY filter.
EXECUTE.

Und die richtigen Fälle wurden gefiltert (obwohl eine Fehlermeldung auftauchte, aber die Syntax trotzdem ihren Sinn erfüllt hat).
Vielen Dank aber schonmal!
Tianchris
 
Beiträge: 9
Registriert: Do 15. Aug 2019, 14:32
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu SPSS Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast