- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
Hallo zusammen,
ich taste mich erst an die SAS Programmierung, habe daher noch zu wenig Erfahrung und hoffe auf eure Hilfe bei folgendem Problem:
Ich exportiere Ergebnisse die in einzelnen Spalten eine Nummer, ein Datum und einen Namen ausweisen. Bislang war es so, dass doppelt vorkommende Nummern geprüft werden. Das ältere Datum zu der Nummer wurde in eine Liste mit Dubletten und das aktuelle Datum in die Liste Daten_final ausgegeben. (siehe Code) Hierfür habe ich meine Export-Datei zuerst nach Datum sortiert und dann
den jeweiligen Ausgabebefehl angegeben.
Nun sollen die Daten nur dann als Dubletten ausgegeben werden, wenn die Nummer und der Name identisch sind. Könnt ihr mir bitte sagen, wo genau ich meinen Code hierfür anpassen muss.
Vielen Dank im Voraus.
Grüße Miri
proc sort data=WORK.QUERY_FOR_EXPORT out=Alle_Daten;
by Nummer descending date;
run;
data Daten_final dubletten_only;
set Alle_Daten;
by Nummer descending date;
if first.Nummer and first.date then output Daten_final ; else output dubletten_only;
run;
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
Hi Miri,
willkommen und viel Spass mit SAS! 😉 na in dem Fall müsstest Du eben schauen, dass nach Nummer und Name sortiert wird und das dann in der Ausgabe berücksichtigen.
Z.B. so:
proc sort data=WORK.QUERY_FOR_EXPORT out=Alle_Daten;
by Nummer Name descending date;
run;
data Daten_final dubletten_only;
set Alle_Daten;
by Nummer Name descending date;
if first.Nummer and first.Name and first.date then output Daten_final ; else output dubletten_only;
run;
Wenn Du über "Code einfügen" gehst, dann wird der Code hier im Forum auch entsprechend formatiert 😉
Viele Grüsse
Michael
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
Hallo Michael,
danke für deine schnelle Antwort.
Es passt leider noch nicht ganz. Als Duplikat sollen nur diese Datensätze gewertet werden, bei denen die Nummer und der Name identisch sind. Momentan nimmt er immer den aktuellen Datensatz.
Nummer Name Date
12 Bauer 12.5.2019; 08:55 Uhr
12 Mayer 12.5.2019; 09:05 Uhr
12 Bauer 12.5.2019; 09:10 Uhr
In diesem Beispiel soll z.B. erster Datensatz als Dublette und die beiden anderen in die Finale Datei ausgegeben werden. Momentan wird nur die letzte Zeile in die finale Datei geschrieben.
Habe ich deinen Code falsch übertragen oder muss ich hier noch etwas anpassen.
Danke 🙂
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
Hallo Miri,
es sieht aus als hättest Du bei Dir vergessen den Sort mit anzupassen. Ich persönlich liebe den Sort und hätte dein Problem komplett mit sorts gelöst.
proc sort data=WORK.QUERY_FOR_EXPORT out=Alle_Daten;
by Nummer Name descending date;
run;
proc sort data=alle_daten out= Neueste dupout=dupletten nodupkey;
by Nummer Name;
run;
Nodupkey sorgt dafür, dass doppelte Datensätze im Ergebnis entfernt wird. Standardmäßig ist das System so eingestellt, dass es den ersten Satz behält. Mit dem ersten Sort wird dafür gesorgt, dass das der Neueste ist.
Mit dupout= kannst Du Dir die entfernten Sätze in eine Datei ausgeben lassen.
Viel Erfolg
Christine
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
Sehr cool. Es funktioniert. Vielen Dank euch beiden!