SAS 4GL ODS, przykładowe procedury. mariusz.dzieciatko@ ODS Output Delivery System Page 1
Output Destination ods output output-object-name=data-set-name; kod programu ods output close; Przykładowe formaty: listing, html, html5, xml, pdf, postscript, rtf, powerpoint, tagsets.excelxp, output ods html ; kod programu ods html close; ods pdf ; kod programu ods pdf close; ods rtf ; kod programu ods rtf close; Dostosowywanie raportów Ods proclabel tekst określa etykietę procedury w spisie treści Ods proctitle lub noproctitle czy nazwa procedury ma być drukowana Ods select selection, Ods exclude selection które obiekty mają być wyświetlone - ukryte Ods show wyświetla listę wybranych obiektów Ods trace on wyświetla informację o dostępnych obiektach Page 2
ODS TRACE STATEMENT ODS dostarcza metody podglądu nazw tworzonych obiektów wynikowych. Składnia: ods trace on < / listing label > ; Wyświetla "trace record" z informacjami o obiektach w logu SAS. Opcja LISTING powoduje umieszczenie powyższych informacji bezpośrednio powyżej wyjścia do którego się odnosi. Opcja LABEL pozwala na uzyskanie ścieżki do etykiety obiektu. ods trace on / label; proc univariate; var meddol; ods trace off; Ods select / exclude - przykłady Aby wysłać obiekty Quantiles oraz Moments dla wszystkich zmiennych do wyjścia w formacie html należy użyć polecenia: ods html select quantiles moments; lub jeżeli tylko interesuje nas zmienna MEDDOL: ods html select meddol.quantiles meddol.moments; Etykiety można użyć w podobny sposób. Można też mieszać ścieżki z etykietami, np.: ods html select meddol."quantiles"; Page 3
Format HTML Opcje File= filename lub body= filename Contents= filename Frame= filename Stylesheet= filename No_top_matter, no_bottom_matter url= URL Style=style_definition Style: ODS Layout Możliwość dowolnego komponowania układu obiektów na stronie w formacie PDF. Daje możliwość tworzenia raportu z użyciem wielu warstw na jednej stronie Page 4
Przykładowe procedury Agregowanie danych: procedura FREQ PROC FREQ DATA=zbiór_wejściowy <ORDER=porządek> <PAGE>; <BY zmienne_grupujące ;> TABLES tablice_częstości </ opcje> ; <WEIGHT zmienna_ważąca ;> PROC FREQ DATA=klasa; TABLES plec wiek; PLEC WIEK WZROST Chłopiec 14 143.2 Dziewczyna 13 141.5 Chłopiec 14 150.5 Dziewczyna 14 142.1 Chłopiec 13 144.8 Page 5
Agregowanie danych: zapis agregatów do zbioru PROC FREQ DATA=klasa NOPRINT; TABLES plec / OUT=freq1; TABLES wiek / OUT=freq2; Agregowanie danych: tablice częstości typu Two-Way PROC FREQ DATA=klasa; TABLES plec*wiek; PLEC WIEK WZROST Chłopiec 14 143.2 Dziewczyna 13 141.5 Chłopiec 14 150.5 Dziewczyna 14 142.1 Chłopiec 13 144.8 PLEC Table of PLEC by WIEK WIEK Frequency Percent Row Pct Col Pct 13 14 Total ------------------------------ Chłopiec 1 2 3 20.00 40.00 60.00 33.33 66.67 50.00 66.67 ------------------------------ Dziewczyna 1 1 2 20.00 20.00 40.00 50.00 50.00 50.00 33.33 ------------------------------ Total 2 3 5 40.00 60.00 100.00 Page 6
Agregowanie danych: procedura MEANS PROC MEANS DATA=zbiór_wejściowy <opcje> <statystyki> ; VAR zmienne_analizowane ; <CLASS zmienne_klasyfikujące ;> <TYPES hierarchia zmiennych klasyfikujących;> <WAYS lista liczb definiujących hierarchie;> <BY zmienne_klasyfikujące ;> <FREQ zmienna_z_częstością ;> <WEIGHT zmienna_ważąca ;> <OUTPUT OUT=zbiór_wynikowy <opcje_statystyk> ;> Agregowanie danych: procedura MEANS - raport PROC MEANS DATA=klasa MEAN; CLASS plec wiek; VAR wzrost; Wynik w OUTPUT: Analysis Variable : WZROST N PLEC WIEK Obs Mean ------------------------------------------------- Chłopiec 13 1 144.8000000 14 2 146.8500000 Dziewczyna 13 1 141.5000000 14 1 142.1000000 ------------------------------------------------- Page 7
Agregowanie danych: procedura MEANS zapis wyników do zbioru PROC MEANS DATA=klasa NOPRINT; CLASS plec wiek; VAR wzrost; OUTPUT OUT=wzrosty MEAN=; PROC PRINT NOOBS; FORMAT _TYPE_ BINARY2.; Zbiór wynikowy: PLEC WIEK _TYPE FREQ_ WZROST -------------------------------------------------. 00 5 144.420 13 01 2 143.150 14 01 3 145.267 Chłopiec. 10 3 146.167 Dziewczyna. 10 2 141.800 Chłopiec 13 11 1 144.800 Chłopiec 14 11 2 146.850 Dziewczyna 13 11 1 141.500 Dziewczyna 14 11 1 142.100 Agregowanie danych: procedura MEANS N-WAY PROC MEANS DATA=klasa NOPRINT NWAY; CLASS plec wiek; VAR wzrost; OUTPUT OUT=wzrosty MEAN=; PROC PRINT NOOBS; FORMAT _TYPE_ BINARY2.; Wynik: PLEC WIEK _TYPE FREQ_ WZROST ------------------------------------------------- Chłopiec 13 11 1 144.800 Chłopiec 14 11 2 146.850 Dziewczyna 13 11 1 141.500 Dziewczyna 14 11 1 142.100 Page 8
Agregowanie danych: procedura MEANS WAYS i TYPES Przykłady: PROC MEANS DATA=kurs.class; CLASS plec kolor miejscowosc ; VAR wzrost; WAYS 1 2; PROC MEANS DATA=kurs.class; CLASS plec kolor miejscowosc ; VAR wzrost; TYPES plec plec*kolor plec*miejscowosc ; Procedura Tabulate Przykład raportu uzyskanego za pomocą procedury TABULATE: 18 Page 9
Procedura Tabulate PROC TABULATE DATA=zbiór-sas-data OUT=zbiór-sas-data <OPCJE>; CLASS zmienne klasyfikujące; VAR zmienne analizowane; TABLE strona,wyrażenie dla wiersza,wyrażenie dla kolumny; FORMAT zmienna1 nazwa_formatu zmienna2 nazwa_formatu; KEYLABEL zmienna='etykieta'; LABEL zmienna='etykieta'; 19 Procedura Tabulate: instrukcja TABLE Pozwala zdefiniować wymiar tabeli (1-3) i jej strukturę Wyrażenie w instrukcji TABLE składa się z elementów i operatorów: Elementy: - Zmienne - Statystyki Operatory: - Operator nawiasu () - Operator spacji - Operator gwiazdki * - Operator przecinka, 20 Page 10
Procedura Tabulate: instrukcja TABLE table towar, nazwisko*mies 21 Procedura Tabulate: statystyki W wyrażeniu TABLE mogą występować dowolne statystyki: Przykładowe statystyki: MEAN STD MIN SUM PCTN PCTSUM ROWPCTSUM UWAGA: Statystyki można definiować tylko w jednym wymiarze tabeli!!! 22 Page 11
Procedura Tabulate: statystyki proc tabulate data=kurs.sprzedaz; var wartosc liczba; table wartosc*mean liczba*mean; proc tabulate data=kurs.sprzedaz; var wartosc liczba; table (wartosc liczba)*mean; proc tabulate data=kurs.sprzedaz; var wartosc liczba; table mean*(wartosc liczba); 23 Procedura Tabulate proc format; value mies 1 ='Styczen' 2 ='Luty' 3 ='Marzec' 4 ='Kwiecien' ; proc tabulate data=dane.sprzedaz; class nazwisko mies; table nazwisko mies; format mies mies.; Tabela wynikowa: 24 Page 12
Procedura Tabulate Grupowanie z użyciem formatów proc format; value tydz 1-4 ="Pierwsza polowa" 5-6="Druga połowa" 7="Niedziela" ; proc tabulate data=dane.sprzedaz; class dzien; table dzien; format dzien tydz.; label dzien='tydzien'; 25 Procedura Tabulate Procedura Tabulate pozwala na definiowanie etykiet dla kolumn tabeli na trzy sposoby: Instrukcja LABEL Instrukcja KEYLABEL label towar='produkt'; keylabel mean='średnia'; Operator = w wyrażeniu TABLE table towar,(nazwisko='' all)*wartosc=''*sum='' wartosc=''*mean='średnio'; 26 Page 13
Procedura Tabulate Sposoby formatowania wartości komórek tabeli: Modyfikator formatu f używany w wyrażeniu TABLE (wraz z operatorem *) pozwala na formatowanie poszczególnych kolumn tabeli. proc tabulate data=dane.sprzedaz; var wartosc liczba; table mean max,wartosc*f=dollar10. liczba*f=commax6.2; 27 Dziękujemy za udział Page 14