ZESTAW 1 SAS 4GL Język stworzony na potrzeby przetwarzania dużych zbiorów danych. Składają się nań: Instrukcje Procedury Definicje zmiennych Opcje systemowe Stałe i znaki specjalne WAŻNE: Każda instrukcja odpowiadająca za przetwarzanie danych rozpoczyna się słowem kluczowym i kończy średnikiem. SAS DISPLAY MANAGER (DM) INTERFEJSY: Interfejs dla Base SAS skierowany głównie do programistów. Pozwala na szybkie wprowadzanie i edycję kodu, debugowanie oraz przegląd raportów. SAS ENTERPRISE GUIDE Aplikacja kliencka systemu Microsoft Windows, która oferuje wygodny interfejs użytkownika nie tylko dla programistów. Umożliwia automatyczne generowanie kodu programu. Pozwala łączyć fragmenty kodu wprowadzone przez użytkownika z kodem utworzonym automatycznie. Wstęp do SAS EG (polecam przejrzeć!) SAS STUDIO (SAS UNIVERSITY EDITION) Aplikacja webowa z dostępem przez przeglądarkę. SAS Studio wykonuje uruchomiony program na serwerze. Serwer SAS może być serwerem w chmurze, w środowisku lokalnym albo serwerem zainstalowanym na maszynie wirtualnej. Po wykonaniu kodu rezultaty można zobaczyć w przeglądarce. http://www.sas.com/pl_pl/software/university-edition.html http://www.sas.com/en_us/software/university-edition/downloadsoftware.html
BIBLIOTEKI Pracując w SASie wykorzystujemy specjalne pliki zwane plikami SASowymi. Takie pliki mieszczą się w bibliotekach SASowych. W SASie znajdziemy kilka wbudowanych bibliotek, np: Ćwiczenie 1 SASHELP jest biblioteką tylko do odczytu, zawiera przykładowe pliki oraz pliki niezbędne do działaniu systemu SAS Biblioteka SASUSER tworzona jest w momencie rozpoczęcia pierwszej sesji SAS. Umożliwia przechowywanie zbiorów prywatnych. WORK jest biblioteką tymczasową, tworzoną na początku każdej sesji, jej zawartość jest usuwana z końcem każdej sesji systemu SAS. Proszę znaleźć bibliotekę SASHELP, a w niej tabelę CARS oraz sprawdzić ile cylindrów, koni mechanicznych oraz jaki rozmiar silnika posiada Audi A6 3.0 Quattro 4dr. Formalnie biblioteka nie jest miejscem, w którym znajdują się dane. Jest WSKAZANIEM (referencją) obszaru dyskowego zawierającego dane. Po zakończeniu sesji biblioteka jest usuwana, nie powoduje to jednak usunięcia danych z obszaru dyskowego, który wskazywała. SPOSÓB 1 (DLA PROGRAMISTÓW) TWORZENIE BIBLIOTEKI Robimy to korzystając z instrukcji LIBNAME libref ścieżka dostępu, np. instrukcja LIBNAME dane C:\Users\student\Desktop tworzy bibliotekę o nazwie dane, która wskazuje na dane znajdujące się w katalogu C:\Users\student\Desktop.
SPOSÓB 2 (DLA KLIKACZY ) 1. NARZĘDZIA->PRZYPISZ BIBLIOTEKĘ PROJEKTU 2. Nadajemy nazwę naszej bibliotece 3. Wybieramy mechanizm biblioteki i podajemy ścieżkę dostępu do miejsca zawierającego dane, które biblioteka ma wskazywać 4. Możemy też dodać dodatkowe opcje (pomijamy)
5. Sprawdzamy, czy a. w zakładce kod wygenerował się kod: LIBNAME LICEUM BASE "C:\Users\student\Desktop\lic" ; b. drzewo projektów zostało zaktualizowane c. na liście bibliotek pojawiła się nowa biblioteka (czasami trzeba odświeżyć) TABELE Dane przechowywane są w tabelach zwanych zbiorami danych SAS. Tabele składają się z wierszy ( obserwacji) i kolumn ( zmiennych). Zmienne mają atrybuty takie jak NAME (nie dłuższa niż 32 znaki, 1 znak musi być literą lub podkreślnikiem _) TYPE (numeryczne lub znakowe ) LENGTH FORMAT (dotyczy drukowania wartości zmiennych)
INFORMAT (dotyczy odczytywania wartości zmiennych) LABEL (dowolna kombinacja liter, cyfr i znaków specjalnych <257 znaków) Atrybuty kolumny możemy przejrzeć lub zmodyfikować, klikając prawym przyciskiem myszy na danej zmiennej i wybierając WŁAŚCIWOŚCI. Ćwiczenie 2 Proszę sprawdzić jakie atrybuty ma zmienna MODEL z tabeli CARS z biblioteki SASHELP. DATA STEP I PROC STEP Na język SAS składają się instrukcje, wyrażenia, funkcje, opcje, formaty i informaty. Elementy te łączone są w dwóch rodzajach bloków (stepów). Komunikacja między blokami odbywa się za pomocą makrozmiennych, makroprogramów lub z wykorzystaniem pośrednich zbiorów danych tworzonych w poszczególnych blokach. DATA STEP - grupa instrukcji pozwalająca na odczyt i zapis danych do plików zewnętrznych. Wyróżniamy fazę kompilacji i fazę wykonania. DATA z1<opcje>...zn<opcje>; RUN; instrukcje; *z1, z2,, zn to zbiory wejściowe data work.example; set sashelp.cars; dlugosc_w_metrach=length/100; run; Uwaga: wielkość liter w poleceniach nie ma znaczenia. PROC STEP - służy do analizy i generowania raportów PROC nazwa DATA=zbior_danych<opcje>; RUN; instrukcje; proc print data=work.example; run; /*Powyższa procedura wyświetli zawartości tabeli example z biblioteki work*/ Pomiędzy blokami mogą pojawiać się dodatkowe instrukcje, np. LIBNAME, FILENAME, OPTIONS TITLEn, FOOTNOTEn,...
TWORZENIE TABEL Do tworzenia tabeli wykorzystywać możemy polecenia INPUT oraz DATALINES W naszej bibliotece LICEUM utwórzmy nową tabelę o nazwie UCZNIOWIE: Uwaga: Jeśli zmienna jest znakowa, to po jej nazwie wstawiamy symbol $ Po wykonaniu programu sprawdzamy, czy: w danych wynikowych pojawiła się odpowiednia tabela w folderze C:\Users\student\Desktop\lic pojawił się plik uczniowie.sas7bdat
Ćwiczenie 3 W bibliotece LICEUM proszę utworzyć tabelę TOWARY_W_SKLEPIKU podaną poniżej (lub zgodną z własnym widzimisie ): Tabelę możemy też tworzyć na podstawie danych zawartych w pliku, np. o rozszerzeniu.txt. Może się nam do tego przydać instrukcja INFILE. Skopiuj na pulpit plik przedmioty.txt i wykonaj następujący data step: Proszę zwrócić uwagę na obcinanie wyrazów. Aby temu zapobiec można skorzystać z instrukcji INFORMAT. CZYTANIE ZBIORÓW DANYCH Do odczytania ze zbioru danych w celu ich dalszego przetwarzania służy instrukcja SET. W tym przypadku instrukcja czyta wszystkie zmienne i wszystkie obserwacje zawarte w zbiorze liceum.przedmioty i zapisuje je do zbioru liceum.przedmioty1. Każde wykonanie instrukcji SET w pętli głównej DATA STEP u powoduje, że SAS czyta jedną obserwację (wiersz) i jej wartości dla poszczególnych zmiennych zapisuje do wektora PDV.
WEKTOR PDV Struktura tworzona w fazie kompilacji Zawiera zmienne ze zbiorów wejściowych, zmienne zadeklarowane w kodzie oraz dwie zmienne tworzone automatycznie( _N_, czyli numer iteracji oraz _ERROR_, która informuje o wystąpieniu ( _ERROR_ = 1 ) lub niewystąpieniu błędu ( _ERROR_ = 0 ) Przed fazą wykonywania wartości wszystkich zmiennych są inicjowane na braki danych. W fazie wykonania zmienne wektora aktualizują się dla każdej obserwacji. Zawartość wektora PDV w kolejnych iteracjach można sprawdzić dodając instrukcje PUT w wykonywanym DATA STEPIE. PUT _all_ wyświetli w logu zawartość wszystkich zmiennych, zaś PUT nazwa_ zmiennej wyświetli tylko zawartość zmiennej o nazwie nazwa_zmiennej. Ćwiczenie 4 1. Stworzyć bibliotekę LIBSAS 2. W bibliotece WORK utworzyć nową tabelę NOWATABELA, która składa się z kolumn IMIE, WZROST, WAGA i wypełnij ją przykładowymi danymi. 3. W bibliotece LIBSAS utworzyć tabelę TABELABMI, która zawiera zmienne z tabeli oraz zmienną BMI (bmi=waga/((wzrost/100)**2);) 4. Zadbać o to, by w logu wyświetliły się zawartości wszystkich zmiennych dla wszystkich obserwacji. Rysunek 1. Zawartość logu po wykonaniu data stepu z instrukcją PUT _all_;
Ćwiczenie 5 Na podstawie tabeli LICEUM.TOWARY_W_SKLEPIKU utworzyć nową tabelę LICEUM.TOWARY, która oprócz nazwy i ceny produktu zawiera jeszcze cenę z VAT. W logu wyświetlić zawartość wektora PDV. OPCJE INSTRUKCJI SET 1. POINT (czytanie tylko wskazanych obserwacji) 2. NOBS (tworzy zmienną tymczasową wskazującą na ostatni numer obserwacji) 3. END (pozwala uzyskać informację, czy została przeczytana ostatnia opcja zbioru wyjściowego) Niektóre opcje można ze sobą łączyć. Więcej informacji można znaleźć oczywiście w dokumentacji Ćwiczenie 6 Korzystając z dowolnej tabeli proszę sprawdzić, czy można łączyć ze sobą opcje a) END i NOBS b) END i POINT c) POINT i NOBS Napisać DATA STEP wykorzystujący dowolną inną opcję instrukcji SET znalezioną w dokumentacji.
PYTANIA PODSUMOWUJĄCE 1. Jakie znasz interfejsy zintegrowane z Base SAS? Czym się od siebie różnią? 2. Jak uruchomić kod programu? 3. Co to jest biblioteka w SAS? 4. Jakie znasz biblioteki stałe w SAS? 5. Jak nazywa się biblioteka tymczasowa w SAS? 6. Jakie polecenie służy do stworzenia biblioteki? 7. Jakie atrybuty posiadają zmienne w SAS? 8. Do czego służy instrukcja SET? 9. Z jakimi opcjami możemy uruchomić instrukcję SET? 10. Co to jest wektor PDV? 11. Jakie znasz dwa rodzaje bloków, w które łączy się instrukcje? Do czego służą? 12. Jakie fazy możemy wyszczególnić w DATA_SET? 13. Uzupełnij kod: