2016-04-25 8 views
1

Ich habe 2 Kunden 2 Monate Transaktionsdatum, jetzt muss ich nur 1. Transaktionsdatum für diesen bestimmten Monat für diesen bestimmten Kunden extrahieren. So brauche ich monatsweise. Ich habe keine richtige Idee dazu auf SAS bekommen. Kann jemand helfen? Danke im Voraus.Suchen 1. Transaktionsdatum in SAS

Cust_name Vis_date V 3/1/2016 V 8/1/2016 V 16/1/2016 V 18/1/2016 V 26/1/2016 V 27/1/2016 E 5/1/2016 E 8/1/2016 E 18/1/2016 E 19/1/2016 E 25/1/2016 E 26/1/2016 V 4/2/2016 V 8/2/2016 V 17/2/2016 V 25/2/2016 V 26/2/2016 V 27/2/2016 E 5/2/2016 E 8/2/2016 E 23/2/2016 E 24/2/2016 E 25/2/2016 E 28/2/2016

Antwort

0

Ich würde zuerst den Monat für jeden Datensatz und dann sortieren. Damit können Sie die Beobachtungen mit einem Daten Schritt herausziehen wie folgt:

data test.doc1;                               
set test.doc;                               

Month = month(__Vis_date);                            
run;                                  

proc sort data=test.doc1;                            
by Cust_name Month __Vis_date;                           
run;                                  

data test.doc2;                               
set test.doc1;                               
by Cust_name Month;                              
if first.Month then output;                            
run;   
+1

Dies funktioniert nur für ein Jahr Daten, wenn Sie mehr als ein Jahr in Ihren Daten haben, erhalten Sie falsche Ergebnisse. –

0

Wenn Sie eine Variable erstellen, die Spur des Monats hält, wird dies recht einfach! Vis_date muss als Datumsvariable formatiert werden, damit dies funktioniert.

data your_data2; 
    set your_data; 
    month = month(vis_date); 
run; 

proc sort data = your_data2; 
by cust_name vis_date; 
run; 

proc sort nodupkey data = your_data2; 
by cust_name month; 
run; 
+0

diese herausziehen nicht der erste Datensatz eines jeden Monats für jeden Kunden – DCR

+0

Sortieren nach cust_name vis_date zuerst und dann nodupkey es von cust_name Monat - mein schlechtes. – superfluous

+0

Mit Ihren Codes habe ich einige Änderungen vorgenommen und die Antwort bekommen. Danke für deine Unterstützung. Der geänderte Code ist unter Daten your_data2; set your_data; Monat = Monat (vis_date); \t check = catx ("_", Cust_name, Monat); \t laufen lassen; proc drucken; \t laufen lassen; proc sort data = Your_data2 nodupkey; von Vis_date; per Scheck; laufen; proc Druckdaten = Your_data2; laufen; –

0

Sie können es in einer einzigen SQL-Anweisung tun:

 
proc sql ; 
    create table want as 
    select Cust_name, 
     put(Vis_date,yymmn6.) as Month, 
     min(Vis_Date) as First_Date format=date9. 
    from have 
    group by 1,2 
    order by 1,2 ; 
quit ;