von 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!