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

Podobne dokumenty