2016-04-12 5 views
0

Die Daten sind im Grunde Monat für Monat Preis der Konfiguration. Ich wollte einen Trend von AMOUNT bekommen. Wie verhält sich der Preis über einen Zeitraum von 12 Monaten für jede Konfiguration und den Gesamttrend?Erhalten Sie die Differenz zwischen den Werten auf Zeilenebene in sas

Proc sql unterstützt keine "diff" -Syntax. Ich kann die normale "do" -Schleife im Datensatz nicht verwenden, da dies hier nicht wirklich hilfreich ist.

Also kann mir jemand dabei helfen?

Dieser Code dient dazu, die Daten im Grunde zu gruppieren und einen Durchschnittspreis für jede Konfiguration in diesem Monat zu erhalten.

proc sql; 

create table c.price1 as 
select 
configuration, 
month, 
mean(retail_price) as amount format = dollar7.2 

from c.price 
where 
configuration is not missing 
and month is not missing 
and retail_price is not missing 
group by configuration, month; 
quit; 

DATA:

Configuration Month  Amount 
1     1 $370.00 
1     2 $365.00 
1     3 $318.00 
1     4 $355.00 
1     5 $350.00 
1     6 $317.40 
1     7 $340.00 
1     8 $335.00 
1     9 $297.00 
1     10 $325.00 
1     11 $320.00 
1     12 $286.65 
2     1 $320.00 
2     2 $315.00 
2     3 $287.86 
2     4 $305.00 
2     5 $300.00 
2     6 $263.76 

....... usw.

+0

Ich verstehe nicht, was Ihre Frage ist. Kannst du bitte deine gewünschte Ausgabe posten? Warum können Sie einen Datenschritt mit diff-Funktion nicht verwenden? – Reeza

+0

Sie können immer eine Tabelle an sich selbst unter der Bedingung a.month = b.month-1 und a.config = b.config verbinden. – Reeza

+0

wenn ich dif Funktion dann wie kontrolliere ich es. In dem Sinne, wenn die Konfiguration von 1 zu 2 ändert, dann will ich nicht $ 320- $ 286.65 (entsprechend den Daten). Ich möchte, dass es gruppiert wird. Wenn sich die Konfiguration ändert, startet die Funktion "dif" also neu. – Dhananjai

Antwort

0

die DIF-Funktion in Verbindung mit Verwenden durch Gruppenbearbeitung.

Data want; 
    Set have; 
    By config; 

     New_var = dif(amount); 

     If first.config then new_var = .; 
Run; 
+0

Vielen Dank! Ich habe mir den gleichen Code gebrochen. Aber mir war nicht bekannt "Wenn first.config dann new_var =.;" Stück der Codierung. Jetzt ist alles sortiert: D – Dhananjai

+0

Dann hast du es irgendwie falsch gemacht. Sende deinen Code und logge dich ein. Definieren Sie auch die Gruppierung. – Reeza

Verwandte Themen