Toon posts:

[SAS] Vraagje ivm met proc transpose ...

Pagina: 1
Acties:
  • 129 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Mijn baas had een rapportje gemaakt in Excel aan de hand van gegevens in een DB2 database. Tot voor kort lukte dit nog, maar nu niet meer, doordat er teveel records in die tabellen zitten.

Nu heeft ie mij gevraagd om een pivottabelletje te maken voor zijn excel rapport met SAS. Transpose lukt wel, maar ik weet niet hoe ik de gewenste layout moet genereren met SAS.

Wat hij wil zien is zoiets:
Afbeeldingslocatie: http://img118.imageshack.us/img118/9439/pivot1ic.th.jpg
Ik SAS krijg ik zoiets gereed:
Voorbeeld van de tabel
code:
1
2
3
4
5
6
7
8
9
10
ADB_ACCT_URN       HITS                HITSCAT             JOBTYPE
      1            2                   A                   LOB
      2            2                   A                   IT
      3            6                   C                   IT
      4            4                   B                   LOB
      5            17                  E                   IT
      6            16                  E                   LOB
      7            3                   B                   LOB
      8            10                  D                   LOB
      9            1                   A                   IT

Op die tabel voer ik volgend commando uit:
code:
1
2
3
4
5
6
7
8
9
10
11
proc transpose data=jcapra.jc_fi_y2dlobit_pub out=Work.jc_fi_y2dlobit_p;
by adb_cont_urn;
id HITSCAT;
Idlabel HITSCAT;
var HITS;
run;

proc sql;
alter table y2dlobit_Pivot
drop column _NAME_, _LABEL_;
run;

Na transpose:
code:
1
2
3
4
5
6
7
8
9
10
ADB_ACCT_URN       A    B    C    D    E    JOBTYPE
      1            2                        LOB
      2            2                        IT
      3                      6              IT 
      4                 4                   LOB
      5                                17   IT
      6                                16   LOB
      7                 3                   LOB
      8                           10        LOB
      9            1                        IT


Eingelijk zou ik zoiets willen bereiken (zonder IT en LOB erboven dan):
code:
1
2
3
4
5
6
7
8
9
10
11
                   IT-------------------    LOB------------------
ADB_ACCT_URN       A    B    C    D    E    A    B    C    D    E
      1                                     2
      2            2                       
      3                      6             
      4                                          4
      5                                17  
      6                                                         16
      7                                          3
      8                                                    10
      9            1
A t.e.m E komen overeen met de 1 - 2 Times t.e.m 15+ Times van op het Screenshot. De bedoeling is om die pivottable te uploaden in een DB2 tabel, dus die x times gaan voor errors zorgen, vandaar de letters. Ik zal er met VBA of iets anders die headers achteraf wel aanpassen.

Hoe kan ik zulke layout best bereiken? Is dat dan gewoon even 2 temp tables maken, ééntje voor LOB, de andere voor IT, 2x transpose en beide mergen of bestaat er iets specifieks voor ?

Alvast bedankt voor jullie tips :)

Verwijderd

je kunt na je transpose proc tabulate gebruiken. Zie voor voorbeelden:
http://www.ats.ucla.edu/stat/SAS/faq/tabulate.htm

gr
pranay

Verwijderd

Topicstarter
Bedankt voor de tip Pranay.
Ik ga me eens bezig houden met tabulate. Interessante site in ieder geval :)

Verwijderd

geen dank. Tabulate is wel gaaf. Als dat niet werkt zou je er met proc reports ook wel uit moeten komen. Daar kun je echt zelf bepalen wat je weg schrijft en ook hoe.

gr
Pranay

Verwijderd

Topicstarter
Ander probleempje... ods, werkt dat niet meer ?
Ik zit hier met SAS v8 en heb al op een hoop forums en groups gelezen dat dit een veel voorkomend probleem is...
code:
1
2
3
4
5
6
7
ods html file='report.xls';
proc tabulate data=Work.jc_fi_y2dlobit_pub;
class jobtype adb_cont_urn hitscat;
var hits;
table adb_cont_urn, jobtype=''*hitscat=''*hits=''*n='';
run;
ods html close;

geeft:
code:
1
2
3
SAS Read Access Violation in Task (Submit)
Exception Occured at (63CC5C0D)
Task traceback


Als ik die code echter op de server uitvoer ipv lokaal gaat het wel, maar dat is echt de bedoeling ervan ^^' (AIX bak)

[ Voor 11% gewijzigd door Verwijderd op 06-04-2006 14:32 ]


Verwijderd

ods is een tijd geleden voor mij maar ik kon dit erover vinden:
http://listserv.uga.edu/c...=ind0407b&L=sas-l&P=23692

Heb er zelf nooit last van gehad maar goed ik gebruikte het in een windows/zOs omgeving

gr
Pranay

Verwijderd

Topicstarter
Heb er een hoop over zitten lezen nu die ods export blijkt niet te werken sinds SAS 8 op een hoop platformen. Sommigen zijn pas gefixed in SAS 9, anderen nog altijd niet.

DDE ging niet icm met proc tabulate.
Verder heb ik niet de indruk dat je zoiets kunt doen met proc report (althans niet de gewenste proc tabulate output nabouwen).

Ik ga alles maar in stukjes opdelen met plain SQL, daarna mergen en zo het gewenste resultaat bouwen en met DDE wegschrijven.
Pagina: 1