Community deutschsprachiger SAS-Anwender und -Programmierer

Antworten
Dies ist eine offene Gruppe. Melden Sie sich an und klicken Sie auf die Schaltfläche „Gruppe beitreten“, um Mitglied zu werden und damit zu beginnen, Beiträge in dieser Gruppe zu veröffentlichen.
Highlighted
Occasional Contributor
Beiträge: 5
"Fehlende" Werte im Balken-Linien-Diagramm

Guten Morgen zusammen,

 

wir möchten ein Balken-Linen-Diagramm erstellen und haben eine Tabelle mit den Feldern Ident, Berichtswoche (alphanumerisch), Numerisches Feld 1, Numerisches Feld 2.

Für jede Kalenderwoche ist das erste numerische Feld gefüllt. Beim zweiten numerischen Feld gibt es missing values.

Wenn wir jetzt ein Balken-Liniendiagramm erstellen und die Berichtswoche auf die x-Achse stellen, das erste numerische Feld als Liniendiagramm angezeigt bekommen möchten und das zweite numerische Feld als Balkendiagramm, dann ignoriert die Prozedur die Balken die nur missing values haben.

Ich habe jetzt den Workaround vorgeschlagen, mit einer berechneten Spalte (when numFeld2 IS MISSING then 0 else numFeld2), aber das ist ja nicht so elegant.

Habt ihr noch weitere Vorschläge? Kann ich eine Option einstellen (Problem: Berichtswoche ist kein Datumsformat)?

 

Gruß

Anika Jura

Contributor
Beiträge: 26
Betreff: "Fehlende" Werte im Balken-Linien-Diagramm

Hallo Anika,

Forum einen Beitrag mit dem Titel "Nicht gefüllte Zellen mit Proc Freq ausgeben".

Darin waren drei Lösungen skizziert, die sich aber auf den proc freq bzw. den proc tabulate beziehen. Aber die Lösung lässt sich ggf auf Deine Prozedur übertragen.

Die Redscope-Beiträge wurden alle nach CoDe SAS übernommen, rechts unten ist der Link ins Archiv, siehe "Redscope Archive". Dort auch Direkter Zugriff auf alle Beiträge aus den Jahren 2005 - 2014.

Viel Erfolg beim Suchen, vielleicht hilft es: Die Lösungen sind vom 17. August 2011 und vom 22. August 2011, beide von Jan Heuer.

 

Gruß Hans

Contributor
Beiträge: 26
Betreff: "Fehlende" Werte im Balken-Linien-Diagramm

Hallo,

... Beitrag von damals gefunden:

Nicht gefüllte Zellen mit Proc Freq ausgeben

 

Gruß Hans

Contributor
Beiträge: 21
Betreff: "Fehlende" Werte im Balken-Linien-Diagramm

Hallo Anika,

 

ich nehme an, ihr verwendet Proc Gbarline?

 

Dann kann im BAR Statement mithilfe der Option midpoints = ... angegeben werden für welche Werte Balken erzeugt werden sollen, die werden dann auch angezeigt, wenn es nur missing values gibt.

Hier ein Beispiel mit Daten aus der Online-Hilfe zu Proc Gbarline:

Für 06AUG07 habe ich missing values für die Variablen CLOSE und VOLUME eingesetzt, VOLUME steuert die Höhe der Balken, CLOSE wird als Linie angezeigt und auf der X-Achse werden die Tage angezeigt.

Der erste Aufruf von Proc Gbarline zeigt, dass für 06AUG07 kein Balken erzeugt wird, da für Balken und Linie keine Werte vorhanden sind.

Beim zweiten Aufruf werden die anzuzeigenden X-Achsen Abschnitte über die MIDPOINT-Anweisung explizit benannt, in dem Fall wird der Wert auf der X-Achse angezeigt, auch wenn keine Daten vorhanden sind.

Im dritten Beispiel lese ich die Werte für die MIDPOINTS dann per SQL in eine Makrovariable, um den Code flexibel zu gestalten.

Goptions reset=all border;
Title1 "NYSE Closing Price and Volume - 2002";

Data nyse;
   Format Day date7.;
   Format High Low Close comma12.;
   Format Volume comma12.;
   Input Day date7. High Low Close Volume;

Datalines;
01AUG07 10478.76 10346.24 10426.91 1908809
02AUG07 11042.92 10298.44 10274.65 1807543
05AUG07 10498.22 10400.31 10456.43 1500656
06AUG07 10694.47 10636.32 . .
07AUG07 10801.12 10695.13 10759.48 1695602
;
Run;

Proc Gbarline data=nyse ;
  * GP Aufruf ohne midpoints, der Balken fuer 06aug07 fehlt *;
  Bar day / discrete sumvar=volume space=4;
  Plot / sumvar=close ;
Run;

Proc Gbarline data=nyse ;
  * GP Aufruf mit midpoints, 06aug07 wird auf der Achse angezeigt *;
  Bar day / discrete sumvar=volume space=4 
    midpoints = "01aug07"d "02aug07"d "05aug07"d "06aug07"d "07aug07"d
  ;
  Plot / sumvar=close ;
Run;

* GP Liste der anzuzeigenden Midpoints direkt aus Tabelle lesen *;
Proc Sql noprint;
  Select put(day,best.) Into :daysList Separated By " "
    From nyse
  ;
Quit;

%Put &=daysList;

Proc Gbarline data=nyse ;
  Bar day / discrete sumvar=volume space=4 
    midpoints = &daysList;
  Plot / sumvar=close ;
Run;
Quit;

Hoffe, dass hilft weiter ;-)

 

Viele Grüße,

 

Grischa

Occasional Contributor
Beiträge: 5
Betreff: "Fehlende" Werte im Balken-Linien-Diagramm

Hallo zusammen,

 

danke erst einmal für die Antworten.

Grisha: Das ist schon eine sehr große Hilfe gewesen. Die Berichtswochen kann ich mir jetzt alle anzeigen lassen und das Balkendiagramm ist auch richtig. Leider ignoriert PROC GBARLINE sehr erfolgreich die Einträge in der Tabelle für das Liniendiagramm, sprich, dort werden auch "fehlende" Werte angezeigt. Kann ich da noch was machen oder muss ich die Tabelle erst vorverdichten.

Die Tabelle ist aber auch eher so:

Woche     NumLin  NumBar

Woche1   3             .

Woche1   5             .

Woche2   2             17

Woche2   5              .

Woche3   4              .

Woche3   2              .

usw.

d.h. jede Woche kann mehrfach auftauchen, die Spalte für das Liniendiagramm ist immer gefüllt, die Spalte für das Balkendiagramm nur sporadisch.

In deinem Beispiel geht es, wenn ich zum Beispiel die folgenden Datalines nutze:

Datalines;

01AUG07 10478.76 10346.24 10426.91 1908809

01AUG07 10478.76 10346.24 10000.91 .

02AUG07 11042.92 10298.44 . .

02AUG07 11042.92 10298.44 . .

05AUG07 10498.22 10400.31 10456.43 1500656

05AUG07 10498.22 10400.31 10000.43 1500000

06AUG07 10694.47 10636.32 10300.12 .

06AUG07 10694.47 10636.32 10000.12 .

07AUG07 10801.12 10695.13 10759.48 1695602

07AUG07 10801.12 10695.13 10000.48 1695000

;

Run;

 

Gruß

Anika

SAS Super FREQ
Beiträge: 703
Betreff: "Fehlende" Werte im Balken-Linien-Diagramm

Hallo Anika

 

Hier ein Beispiel mit SGPLOT, mit deinen Daten.

 

data have;
  infile cards;
  input
    Woche : $8.
    NumLin : 8.
    NumBar : 8.
  ;
cards;
Woche1 3 .
Woche1 5 .
Woche2 2 17
Woche2 5 .
Woche3 4 .
Woche3 2 .
Woche4 . .
;

proc sgplot data=have;
  vbar woche / response=NumBar;
  vline Woche / response=NumLin markers;
run;

Bruno

Occasional Contributor
Beiträge: 5
Betreff: "Fehlende" Werte im Balken-Linien-Diagramm

Damit funktioniert die Abfrage.

Danke schön!