SAS 4GL Podsumowanie. mariusz.dzieciatko@ SAS 4GL to język czwartej generacji, nieproceduralny, umożliwiający: Dostęp do danych Przetwarzanie danych (czyszczenie, transformacje, łączenie) Analizę danych Raportowanie Sas 4gl Co to jest? Automatyzację - makroprogramowanie Page 1
Sas 4gl 3 środowiska programowania Sas 4gl Biblioteka wskazanie (referencja) na obszar dyskowy, ma którym znajdują się dane wykorzystywane przy pracy może wskazywać na obszar lokalny (aplikacja SAS i dane na jednym komputerze) może wskazywać na obszar zdalny (aplikacja SAS i dane znajdują się na różnych komputerach) opisuje dane "praktycznie" dowolnego formatu Page 2
Sas 4gl Import danych data out.produkty; infile '/folders/myfolders/produkty.txt'; input Produkt_Id Kod $ Producent :$10. Grupa :$12. Kategoria $ Cena Nazwa :$30.; Sas 4gl Typy zmiennych i reprezentacja wartości pustych w zbiorze Reprezentacja wartości pustych w zbiorze typ znakowy: pusta wartość typ numeryczny: kropka (.) Page 3
Sas 4gl IF a WHERE data out.produkty; set dane.produkty_5; if cena < 1000 then nowa_cena=cena*1.1; else nowa_cena=cena; data out.produkty2; set dane.produkty_5; nowa_cena=cena*1.1; where nowa_cena < 1000; put _all_; Sas 4gl Opcje zbiorów keep, drop data out.produkty; set dane.produkty (keep=kod Producent Cena); put _all_; data out.produkty(keep=kod Producent Cena); set dane.produkty; put _all_; Page 4
TWORZENIE TABLICY ARRAY ARRAY-NAME {N} <$> <LENGTH> ELEMENTS <(INITIAL-VALUES)>; gdzie: array-name nazwa tablicy N liczba elementów $ - oznacza tablicę zmiennych znakowych length długość elementów tablicy elements lista zmiennych initial values wartości początkowe _NUMERIC_ - wszystkie zmienne numeryczne _CHARACTER_ - wszystkie zmienne znakowe _ALL_ - gdy wszystkie zmienne w zbiorze są jednakowego typu KONWERSJA TYPÓW data wynik; length numeric 8; text='12'; numeric=text; text=numeric*3; data wynik; numeric1 = 12; text1 = '1,234.56'; text2 = put (numeric1, z3. -l); numeric2 = input (text1, comma8.2); Page 5
FORMATY: PRZYPISANIE FORMATU FORMAT zmienna1 format1. zmienna2 format2....; DATA zbior; numer=12500.67; miesiac=7; FORMAT numer commax12.2 miesiac z2.; PROC PRINT DATA=zbior NOOBS; Wynik w OUTPUT: PROC PRINT DATA=zbior NOOBS; FORMAT miesiac roman.; Wynik w OUTPUT: numer miesiac 12.500,67 VII numer miesiac 12.500,67 07 FORMATY: PROCEDURA FORMAT PROC FORMAT <LIB=biblioteka> <CNTLIN=zbiór_definicyjny> <FMTLIB>; <VALUE nazwa zakres1 = wartość_sformatowana1... zakresn = wartość_sformatowanan ; > PROC FORMAT; VALUE oddzial 0 = 'Centrala' 1 = 'Oddział 1' 2 = 'Oddział 2' OTHER = 'Błędny kod!' ; Page 6
Sas 4gl Łączenie zbiorów data klasa; set klasa_m klasa_f; by name; data klasa; merge klasa_1 klasa_2; by name; A Sas 4gl Makrozmienne %let j=wartość makrozmiennej; %let k=%scan(&lista,1); %put &k; data _null_; set produkty end=koniec; call symput('lista', symget('lista') ' ' kategoria); if koniec then call symput('liczba',_n_); Page 7
Sas 4gl Makro %macro zbiory2; data %do i=11 %to 16; class&i.(where=(age=&i.)) %end; ; set sashelp.class; %mend; %zbiory2; %macro kategoria(kat, warunek= cena=750); %if &kat eq %then %put Brak kategorii; %else %do; data &kat; set dane.produkty; where kategoria="&kat" %if &warunek ne %then and &warunek; ; %end; %mend; PROCEDURA TRANSPOSE MIES WSK1 WSK2 1 1.1 2.1 2 1.2 2.2 3 1.3 2.3 4 1.4 2.4 5 1.5 2.5 6 1.6 2.6 PROC TRANSPOSE DATA=zbiór_wejściowy <PREFIX=prefix> ; <BY zm_gupujące ;> <VAR zm_transponowane ;> <ID zm_z_nazwami ;> COL1 COL2 COL3 COL4 COL5 COL6 1 2 3 4 5 6 PROC TRANSPOSE DATA=kurs.sumy OUT=tsumy; 1.1 1.2 1.3 1.4 1.5 1.6 2.1 2.2 2.3 2.4 2.5 2.6 OUT=zbiór_wynikowy Page 8
Agregowanie danych 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 Table of PLEC by WIEK PLEC 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 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> ;> Domyślnie N, MEAN, STD, MIN, MAX Descriptive statistic keywords CLM NMISS CSS RANGE CV SKEWNESS SKEW KURTOSIS KURT STDDEV STD LCLM STDERR MAX SUM MEAN SUMWGT MIN UCLM MODE USS N VAR Quantile statistic keywords MEDIAN P50 Q3 P75 P1 P90 P5 P95 P10 P99 P20 P30 P40 P60 P70 P80 Q1 P25 QRANGE Hypothesis testing keywords PROBT PRT T Page 9
Agregowanie danych: procedura MEANS 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 ------------------------------------------------- Procedura Tabulate Przykład raportu uzyskanego za pomocą procedury TABULATE: 20 Page 10
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'; 21 Output Destination Przykładowe formaty: listing, html, html5, xml, pdf, postscript, rtf, powerpoint, tagsets.excelxp, output ods html style=htmlblue; kod programu ods html close; ods output outobjectname=datasetname; kod programu ods output close; Page 11
SAS dla Studentów Akademia Młodych Talentów Trzy tury Akademii dla programistów, po jednej na: lipiec, sierpień, wrzesień. Oferujemy: 2 tygodniowy, intensywny cykl szkoleń z rozwiązań SAS udział w egzaminie, kończącym się certyfikatem [ Certified SAS Base Programmer] dla najlepszych absolwentów - pracę przy realizacji innowacyjnych projektów w SAS lub u klientów Zapraszamy studentów III, IV i V roku oraz absolwentów kierunków informatycznych. Więcej informacji: https://goo.gl/dzeiva Akademickie Centrum Kompetencji Celem programu jest pomaganie najzdolniejszym studentom uczącym się SAS w stawianiu pierwszych kroków na rynku pracy. Korzyści: możliwość udziału w Dniach Otwartych w SAS wymiana wiedzy i doświadczeń w ramach grupy ACK baza ofert praktyk/pracy otwarta dla studentów zarejestrowanych w Programie bezpośredni kontakt z potencjalnymi pracodawcami (klienci i partnerzy SAS) udział w szkoleniach produktowych okazja do podnoszenia kompetencji miękkich poprzez udział w organizowanych przez SAS inicjatywach Więcej informacji: https://goo.gl/38oeid Dołącz do grupy Akademickiego Centrum Kompetencji na LinkedIn i bądź na bieżąco z wydarzeniami SAS: https://goo.gl/gakowu Dziękujemy za udział Kolejne konsultacje 9 maja godz. 16:00 17:00 Page 12