ZAJĘCIA I
Transkrypt
ZAJĘCIA I
ZAJĘCIA I WPROWADZENIE DO PRACY Z SYSTEMEM SAS 1. Kilka użytecznych informacji - wielkie, małe litery: nie ma znaczenia - komentarze • początek '*' i koniec ';' lub • początek '/*' i koniec '*/' - każde polecenie kończy się ';' - nazwy zmiennych: • co najwyżej 8 znaków • muszą zaczynać się literą bądź '_' • mogą zawierać litery, cyfry, '_' - dane: zmienna_1 zmienna_2 ... zmienna_n obserwacja_1 obserwacja_2 ... obserwacja_n - miejsca dziesiętne '.' - brakujące dane '.' 2. Programy - składają się z dwóch podstawowych bloków • blok danych, • blok proceduralny. Blok danych: • zaczyna się słowem kluczowym DATA, • czytanie i modyfikacja danych, • utworzenie zbioru danych SAS, • można w nim używać instrukcji sterujących (pętle DO, IF-THEN/ELSE itd.) Składnia: DATA nazwa_zbioru_danych_SAS; Blok proceduralny: • zaczyna się słowem PROC, • wykonanie analizy, wywołanie funkcji, • uzyskanie wyników, raport. Składnia: PROC nazwa_procedury_do_wywołania; - obydwa bloki składają się z ciągu instrukcji, - obecność obydwu bloków w programie nie jest konieczna, - blok kończy się, gdy SAS napotyka nowy blok (czyli słowo kluczowe DATA bądź PROC), słowo kluczowe RUN lub też koniec programu (bloki mogą się kończyć słowami QUIT, STOP lub ABORT). 3. Wczytywanie danych Zmienna tekstowa: znak '$' po nazwie zmiennej oznacza przejście do następnej linii oznacza przejście do linii numer n (nie jest konieczne czytanie w kolejności 1, 2, 3...) przejście do kolumny numer n na końcu wyrażenia INPUT oznacza, że czytanie danych nie zostanie przerwane po przeczytaniu określonej liczby wartości zmiennych; przy zastosowaniu @@ po przeczytaniu każdej kombinacji danych o określonych typach (tekst, tekst, liczba, liczba, liczba) wiadomo jest, że kolejną wartością jest wartość pierwszego atrybutu dla nowej obserwacji. przesuwa wskaźnik o n kolumn powoduje, że zmienna jest czytana do momentu osiągnięcia zadanej długości lub gdy napotkane zostały dwie kolejne spacje; zmienna może zawierać spację / #n @n @@ +n & INFORMAT – skojarzenie formatu danych z określoną zmienną (wczytywanie) FORMAT – określenie formatu wyświetlania danych Dane wewnętrzne • • • słowo kluczowe datalines wskazuje, że mamy do czynienia ze zbiorem wewnętrznym, datalines musi być ostatnią instrukcją w bloku danych, INPUT określa jak czytać dane. DSD – domyślny separator to ',' Czytanie danych, których rekordy zawierają wiele wartości • • długość rekordu: liczba znaków włączając „białe znaki”, należy wykorzystać opcję LRECL. Przykład: INFILE 'd:\dane\zbior.txt' LRECL=2000; - gdzie 2000 to długość najdłuższego wiersza Czytanie danych, które nie są w formie standardowej. Informanty. Informanty służą do określenia sposobu czytania danych i podstawiania pod zmienne SAS. Można je pogrupować w trzy kategorie: • • • Znakowe Numeryczne Data/Czas $INFORMATw. INFORMATw.d INFORMATw. Data- liczba dni od 1 stycznia 1960. Czas- liczba sekund po północy. Data/Czas- liczba sekund po północy 1 stycznia 1960. w- szerokość d- ilość miejsc po przecinku (dane wejściowe są dzielone przez 10 do potęgi d) Znakowe $CHARw. $w. czytanie danych znakowych, białe znaki nie są obcinane czytanie danych znakowych, białe znaki są obcinane Przykład Wejście Wyrażenie INPUT INPUT numer $CHAR10.; PS1 PS1 INPUT numer $CHAR10.; PS1 INPUT numer $10.; Wynik PS1 PS1 PS1 Numeryczne usuwanie przecinków oraz '$', '(' zamieniany na znak '-' zamiana wielkości w procentach na liczbę standardowa liczba COMMAw.d PERCENTw. w.d Przykład Wejście Wyrażenie INPUT Wynik $10,10 INPUT liczba COMMA10.; 1010 (1,2) INPUT liczba COMMA10.; -12 5% INPUT liczba PERCENT5.; 0.05 (10%) INPUT liczba PERCENT5.; -0.1 1234 INPUT liczba 5.1; 123.4 -12.3 INPUT liczba 5.1; -12.3 Data/Czas czytanie dat w formacie ddmmmyy lub ddmmmyyyy czytanie wartości o formie ddmmmyy hh:mm:ss.ss czytanie dat w formacie mmddyy lub mmddyyyy czytanie czasu w formacie hh:mm:ss.ss DATEw. DATETIMEw. MMDDYYw. TIMEw. Przykład Wejście Wyrażenie INPUT Wynik 1jan1961 INPUT dzien DATE10.; 366 1 jan 1961 INPUT dzien DATE10.; 366 1jan1960 10:30:15 INPUT dzien DATETIME18.; 37815 1jan1961,10:30:15 INPUT dzien DATETIME18.; 31660215 01-01-61 INPUT dzien MMDDYY8.; 366 01/01/61 INPUT dzien MMDDYY8.; 366 10:30 INPUT czas TIME8.; 37800 10:30:15 INPUT czas TIME8.; 37815 Czytanie danych, gdy wartości dla jednej obserwacji znajdują się w paru liniach. Przykład Plik zbior2.txt: Polska PL 10 20 40 12 Niemcy GER 1 53 10 Czytanie danych, gdy w jednej linii jest wiele obserwacji Przykład Plik zbior4.txt: Polska PL 10 20 12 Niemcy GER 1 53 10 Opcje wyrażenia INFILE FIRSTOBS=n wskazuje od której linii należy zacząć czytanie danych, MISSOVER w przypadku napotkania końca linii nie przechodzimy do następnej linii w poszukiwaniu danych dla reszty atrybutów danej obserwacji: wszystkie pozostałe zmienne obserwacji przyjmują wartość brakującą, PAD potrzebna, gdy czytane są dane ze specyfikacją numerów kolumn, gdzie znajdują się konkretne wartości i niektóre wiersze są krótsze niż inne. Uzupełnia wszystkie czytane linie spacjami do maksymalnej długości linii (parametr LRECL określa maksymalną długość linii, domyślnie 132), DLM wykorzystywane do zmiany domyślnego separatora (np: DLM=',' oznacza przecinek jako separator). Czytanie danych „nieregularnych” • • • nie wszystkie wartości oddzielone np. spacjami, brak określenia brakujących obserwacji przy użyciu '.' liczby po nazwie zmiennej określają w jakich kolumnach (od-do) znajdują się dane określonej zmiennej 4. Formatowanie wyników Tytuł strony dla wyników TITLE • • określenie tytułu dla każdej strony wyniku, można określić do 10 tytułów dodając po do słowa TITLE kolejną cyfrę. Stopka FOOTNOTE • można określić do 3 stopek Etykiety zmiennych LABEL Gdy LABEL jest używane w bloku danych, to etykiety stają się częścią zbioru danych. Gdy używane są w bloku proceduralnym: „żyją” jedynie do momentu zakończenia bloku. NOOBS- kolejne numery obserwacji nie są wyświetlane