Przetwarzanie danych. Biblioteka. Presentation title. Biblioteka:



Podobne dokumenty
SAS 4GL Podsumowanie.

SAS 4GL ODS, przykładowe procedury.

SAS Podstawowe informacje przed ćwiczeniem 1

Tytuł: PRZETWARZANIE DANYCH W SAS Autor: Wioletta Grzenda, Aneta Ptak-Chmielewska, Karol Przanowski, Urszula Zwierz. Wstęp

Wprowadzenie do SAS. Jak zacząć? Enhanced Editor (1) Uruchamianie programu. Ćwiczenie 3. Definiowanie bibliotek

1 Obliczenia na danych

ZESTAW 1 SAS 4GL. Język stworzony na potrzeby przetwarzania dużych zbiorów danych. Składają się nań:

ZAJĘCIA 2. Przed rozpoczęciem zajęć należy wykonać instrukcje z poprzednich laboratoriów bądź z pliku zaj2_prep.sas. FILTROWANIE WIERSZY

PAKIETY STATYSTYCZNE

Wprowadzenie do SAS 4GL Zapoznanie ze środowiskiem SAS University Edition oraz SAS Studio. Podstawowe pojęcia środowiska SAS.

OBLICZENIA NA DANYCH

Sas 3 przygotowanie do laboratorium

PAKIETY STATYSTYCZNE

PAKIETY STATYSTYCZNE

Wprowadzenie do Systemu SAS i programowania w SAS 4GL

SAS Podstawowe informacje przed ćwiczeniem 2

Wprowadzenie do programowania w SAS-ie oraz estymacji rozkładów

Bloki anonimowe w PL/SQL

PAKIETY STATYSTYCZNE 5. SAS wprowadzenie - środowisko Windows

Wykład. Wprowadzenie do systemu SAS (import i transformacje danych)

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

SAS. Wprowadzenie do Systemu I Języka 4GL. Seweryn Kowalski /9/2006 1

INFORMATYKA W SELEKCJI

SAS Macro Language w pigułce

PAKIETY STATYSTYCZNE

Stosowanie indeksów ma swoje korzyści, ale bywa również kosztowne.

Autor: Joanna Karwowska

Podstawy programowania skrót z wykładów:

System operacyjny Linux

Informatyka w selekcji - Wykªad 4

SQL (ang. Structured Query Language)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Właściwości i metody obiektu Comment Właściwości

Autor: Joanna Karwowska

Oracle11g: Wprowadzenie do SQL

Wstęp do programowania. Różne różności

Bash - wprowadzenie. Bash - wprowadzenie 1/39

BIOMETRIA 3. Wprowadzenie do pakietu SAS

Instrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ;

Przestrzenne bazy danych Podstawy języka SQL

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Podstawowe operacje na macierzach, operacje we/wy

Tabela wewnętrzna - definicja

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Systemy GIS Tworzenie zapytań w bazach danych

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

Przydatne sztuczki - sql. Na przykładzie postgres a.

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Algorytmika i Programowanie VBA 1 - podstawy

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wykład 5. SQL praca z tabelami 2

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Wykład II - Dane w Systemie SAS

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Bazy danych 7. SQL podstawy

Wykład 4. SQL praca z tabelami 1

Administracja i programowanie pod Microsoft SQL Server 2000

Ćwiczenie 1. Wprowadzenie do programu Octave

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Warunki logiczne instrukcja if

STROJENIE PRZETWARZAŃ SAS

Relacyjne bazy danych. Podstawy SQL

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Microsoft SQL Server Podstawy T-SQL

Wykład 3 Składnia języka C# (cz. 2)

Algorytmy i struktury danych

Bazy Danych i Usługi Sieciowe

Python. Wprowadzenie. Jolanta Bachan

INFORMATYKA W SELEKCJI

Metody numeryczne Laboratorium 2

Język programowania PASCAL

PODSTAWY BAZ DANYCH 13. PL/SQL

ANALIZA DANYCH W STATA 8.0

Języki skryptowe w programie Plans

Język SQL. Rozdział 2. Proste zapytania

Aplikacje w środowisku Java

Instalacja Pakietu R

ANALIZA DANYCH W STATA 8.0 CZĘŚĆ II

Podstawy JavaScript ćwiczenia

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Wprowadzenie do SAS. Wprowadzenie. Historia SAS. Struktura SAS 8. Interfejs: SAS Explorer. Interfejs. Część I: Łagodny wstęp do SAS Rafał Latkowski

1. Indeksy/indeksowanie : Do elementów wektora, list, macierzy czy ramek, można się odwołać na kilka sposobów.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Lab 9 Podstawy Programowania

Indeksowanie w bazach danych

Wstęp do Programowania Lista 1

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Część 4 życie programu

Programowanie komputerowe. Zajęcia 1

Transkrypt:

Przetwarzanie danych Biblioteka 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 1

Instrukcja LIBNAME Tworzenie biblioteki LIBNAME nazwa <motor> ścieżka <opcje>; parametr motor sposób dostępu do danych, np. v8 dostęp do danych z wersji 8, v9 dostęp do danych z wersji 9, oracle bezpośredni dostęp do zbiorów bazy ORACLE. parametr opcje zależne od systemu operacyjnego i od wybranego motoru Usuwanie biblioteki LIBNAME nazwa CLEAR; 4GL: DATA STEP Plik tekstowy Plik tekstowy I N E I F L T N I I U P L F P U E T DATA STEP O E U T G T E R P S E U M T Zbiór danych SAS Zbiór danych SAS 2

4GL: DATA STEP DATA zb_wynik_1 (opcje_zb_1)... zb_wynik_n (opcje_zb_n);... Instrukcje;... DATA wynik; SET dane.zbior; suma=x+y+z; DATA STEP: PDV Program Data Vector data wynik; set zrodlo; suma = x+y+z; run; Nazwa X Y Z SUMA Typ N N N N Długość 8 8 8 8 Wartość.... 3

DATA STEP: instrukcja przypisania Przypisanie wartości do zmiennej zmienna = wyrażenie; suma = x + y + z; Odczyt danych ze zbiorów SAS SET zbiór_wejściowy_1 (opcje_zbioru_1)... zbiór_wejściowy_n (opcje_zbioru_n); Odczyt danych ze zbiorów SAS MERGE zbiór_wejściowy_1 (opcje_zbioru_1)... zbiór_wejściowy_n (opcje_zbioru_n); Odczyt danych ze zbiorów tekstowych INFILE zbior_tekstowy; INPUT lista_zmiennych; Zapis danych do zbiorów tekstowych FILE zbior_tekstowy; PUT lista_zmiennych; Opcje systemowe DATA test SET kurs.klasa; OPTIONS DATASTMTCHK = COREKEYWORDS ALLKEYWORDS NONE; 4

PROC STEP: składnia PROC nazwa_procedury DATA=zbiór_danych opcje_procedury;... Instrukcje ;... Przykładowe instrukcje: WHERE warunek BY zmienne ograniczenie zbioru przetwarzanych obserwacji wymuszenie przetwarzania w grupach FORMAT zmienna format sformatowanie zmiennej podanym formatem TITLEn tytuł FOOTNOTEn tytuł zadeklarowanie n-tego tytułu dla raportów zadeklarowanie n-tej stopki dla raportów PROC STEP Przykłady: proc print data=sashelp.class ; where age>11 ; by sex ; title 'Lista uczniów' ; run; proc chart data=sashelp.class; vbar age /discrete; run; 5

Instrukcja SET SET <zbiór_wejściowy<(opcje_zbioru)>> <NOBS=zmienna> <END=zmienna>; data wynik; set zbior; run; LOG: 1 data wynik; 2 set zbior; 3 run; NOTE: There were 121866 observations read from the data set WORK.ZBIOR. NOTE: The data set WORK.WYNIK has 121866 observations and 7 variables. NOTE: DATA statement used (Total process time): real time 0.31 seconds cpu time 0.18 seconds Czytanie zbioru: filtrowanie wierszy zbiór (WHERE=(warunek)) WHERE warunek; data wynik; set zbior (where=(kwota > 0)); run; data wynik; set zbior; where kwota > 0; run; 6

Czytanie zbioru: filtrowanie kolumn zbiór(keep=zmienne DROP=zmienne) KEEP zmienne; DROP zmienne; data wynik; set zbior (keep=imie data); run; data wynik; set zbior (drop=data); run; data wynik; set zbior; keep imie data; run; Czytanie zbioru: zmiana nazw zmiennych zbiór(rename=(stara_nazwa=nowa_nazwa...)) RENAME stara_nazwa=nowa_nazwa...; data wynik; set zbior (rename=(data=dd)); run; data wynik; set zbior; rename data=dd; run; data wynik (rename=(x1-x100=y1-y100)); set zbior; run; 7

Wyrażenia SAS: stałe numeryczne Zapis standardowy 1 1.23 03-5.12 Notacja naukowa 1.2e23 0.5E-10 Zapis heksadecymalny 322x 0b37X 0AC4x Wyrażenia SAS: stałe znakowe Zapis standardowy Tomasz Gilberta Grape a Ala ma kota Zapis heksadecymalny 534153 x 07 x 8

Wyrażenia SAS: stałe daty i czasu Stałe zawierające datę 1jan1990 d 03FEB89 d Stałe zawierające czas 9:25 t 10:33:12 t Stałe zawierające datę i czas 1jan1990:9:25 dt ddmmm<yy>yy gg:mm<:ss<.s>> ddmmm<yy>yy:gg:mm<:ss<.s>> 03FEB89:10:33:12 dt Stałe daty i czasu mają wartość numeryczną, a nie znakową!!! Wyrażenia SAS: operatory Operatory arytmetyczne: ** potęgowanie * mnożenie / dzielenie + dodawanie - odejmowanie Operatory porównania: = EQ równe ^= NE nierówne ~= NE nierówne > GT większe < LT mniejsze >= GE większe lub równe <= LE mniejsze lub równe IN jest elementem listy 9

Wyrażenia SAS: operatory Operatory logiczne: & AND logiczne mnożenie OR logiczna suma ^ NOT logiczna negacja ~ NOT logiczna negacja Operatory specjalne:!! konkatenacja tekstów <> MAX wartość maksymalna >< MIN wartość minimalna Funkcje SAS: wywoływanie nazwa_funkcji(argument_1, argument_2,...) nazwa_funkcji(of argument_1-argument_n ) nazwa_funkcji(arg_p--arg_k ) nazwa_funkcji() DATA funkcje; args = SUM(12,kwota1); arg_of = MEAN(OF kwota1-kwota5); arg_=mean(ax--pr); w_arg = DATE(); Nazwa ab tn ax kp... pr br Wartość 5 8 3 0. 6 4 10

Konwersja typów: konwersja niejawna data wynik; length numeric 8; text='12'; numeric=text; text=numeric*3; run; LOG: NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column). 4:12 NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column). 5:16 Konwersja typów: konwersja jawna zmienna_znakowa = PUT (zmienna, format); zmienna_numeryczna = INPUT (zmienna, informat); data wynik; numeric1 = 12; text1 = '1,234.56'; text2 = put (numeric1, z3. -l); numeric2 = input (text1, comma8.2); run; 11

Konwersja typów: ograniczenia data test; numer = 4; run; proc print data=test; where numer = '4'; run; LOG: ERROR: Where clause operator requires compatible variables. Przechowywanie informacji w pętli głównej: instrukcja RETAIN RETAIN zmienna1 <wartość1> zmienna2 <wartość2>... ; DATA sumy; SET zbior; RETAIN suma 0; suma = suma + kwota; Inne rozwiązanie: DATA sumy; SET zbior; suma + kwota; retain var1-var20 (10*5,2*(6,4*7)); 12

Przechowywanie informacji w pętli głównej: funkcja LAG LAG<n>(wyrazenie) DATA test; SET zbior1; y=lag(mies); z=lag2(mies); PROC print; title 'Funkcja LAG()'; Przechowywanie informacji w pętli głównej: funkcja DIF DIFn(wyrazenie) DIFn(wyrazenie) wyrazenie - LAGn(wyrazenie) DATA test; SET zbior1; y=dif2(mies); z=mies-lag2(mies); PROC print; title 'Funkcja DIF()'; 13

Przetwarzanie iteracyjne: pętla DO DO zmienna = start TO stop <BY krok>;... END; DATA losowe; DO x = -1 TO 1 BY.05; y = RANUNI(0); OUTPUT; END; Przetwarzanie iteracyjne: pętla DO DO zmienna = wartosc1, wartosc2, wartosc3...;... END; DATA stawki; DO mies='styczeń', 'Luty'; INPUT kwota; OUTPUT; END; CARDS; 2003.01 2003.02 2004.01 2004.02 ; 14

Przetwarzanie iteracyjne: pętla DO WHILE DO WHILE (warunek);... END; DATA _null_; n=0; DO WHILE(n <= 5); PUT n=; n+1; END; Przetwarzanie iteracyjne: pętla DO UNTIL DO UNTIL (warunek);... END; DATA _null_; n=0; DO UNTIL(n <= 5); PUT n=; n+1; END; 15

Przetwarzanie iteracyjne: zagnieżdżanie pętli DATA inwest; ROK=1990; DO WHILE ( ROK <= YEAR(TODAY()) ); kapital + 2000; DO mies=1 TO 12; kapital + (kapital*(0.1/12)); END; OUTPUT; ROK + 1; END; DROP mies; Przetwarzanie w grupach: instrukcja BY BY lista zmiennych <NOTSORTED>; lista_zmiennych zawiera zbiór zmiennych klasyfikujących, których wartości wyznaczają podział na grupy, w których odbywa się przetwarzanie NOTSORTED opcja ta pozwala na przetwarzanie zbiorów nie posortowanych wg zmiennych z listy podanej po instrukcji BY Standardowo wymaga się, aby zbiór danych przetwarzany w podziale na grupy był posortowany lub poindeksowany według zmiennych grupujących. 16

Przetwarzanie w grupach DATA KURS MIES 16/04/91 85 04/91 23/04/91 76.5 04/91 30/04/91 69 04/91 14/05/91 62.5 05/91 21/05/91 56.5 05/91 28/05/91 56 05/91 04/06/91 61.5 06/91 11/06/91 67.5 06/91 18/06/91 61 06/91 25/06/91 60 06/91 data stopa; retain poczatek; set spolka; by mies; if first.mies then poczatek = kurs; if last.mies then do; stopa = (kurs - poczatek) / poczatek; output; end; keep mies stopa; run; Sortowanie danych PROC SORT DATA=zbiór_do_sortowania <OUT=zbiór_posortowany> <opcje>; BY <DESCENDING> var1 <DESCENDING> var2; Opcje: NODUP NODUPKEY FORCE w zbiorze nie zostaną zapisane powtarzające się obserwacje w zbiorze nie zostaną zapisane obserwacje z powtarzającymi się wartościami klucza wymusza sortowanie zbioru poindeksowanego. W przypadku, gdy nie został podany zbiór wyjściowy indeksy zostaną zniszczone. 17

Sortowanie danych: przykład PROC SORT DATA=kurs.klasa; BY wzrost; PROC CONTENTS DATA=kurs.klasa; Alphabetic List of Variables and Attributes # Variable Type Len 1 Imie Char 8 2 Plec Char 1 4 Waga Num 8 3 Wiek Num 8 5 Wzrost Num 8 Sort Information Sortedby Wzrost Validated YES Character Set ANSI Łączenie zbiorów danych MIES WSK WSK1 1 1.1 1.2 2 1.1 1.2 3 1.1 1.2 4 1.1 1.2 5 1.1 1.2 6 1.1 1.2 sklejenie MIES WSK WSK2 1 2.1 2.2 2 2.1 2.2 3 2.1 2.2 4 2.1 2.2 6 2.1 2.2 konkatenacja MIES WSK WSK2 1 2.1 2.2 2 2.1 2.2 3 2.1 2.2 4 2.1 2.2 6 2.1 2.2 18

Konkatenacja zbiorów: instrukcja SET SET zbior1 zbior2... ; DATA razem; SET zbior1 zbior2; MIES WSK WSK1 WSK2 1 1.1 1.2. 2 1.1 1.2. 3 1.1 1.2. 4 1.1 1.2. 5 1.1 1.2. 6 1.1 1.2. 1 2.1. 2.2 2 2.1. 2.2 3 2.1. 2.2 4 2.1. 2.2 6 2.1. 2.2 Konkatenacja zbiorów: przeplot zbiorów SET zbior1 zbior2... ; BY zmienna1 zmienna2... ; DATA razem; SET zbior1 zbior2; BY mies; MIES WSK WSK1 WSK2 1 1.1 1.2. 1 2.1. 2.2 2 1.1 1.2. 2 2.1. 2.2 3 1.1 1.2. 3 2.1. 2.2 4 1.1 1.2. 4 2.1. 2.2 5 1.1 1.2. 6 1.1 1.2. 6 2.1. 2.2 19

Sklejanie zbiorów: instrukcja MERGE MERGE zbiór1 zbiór 2... ; DATA razem; MERGE zbior1 zbior2; MIES WSK WSK1 WSK2 1 2.1 1.2 2.2 2 2.1 1.2 2.2 3 2.1 1.2 2.2 4 2.1 1.2 2.2 6 2.1 1.2 2.2 6 1.1 1.2. Sklejanie zbiorów: wspólne zmienne DATA razem; MERGE zbior1 zbior2(rename=(wsk=wsk3)); MIES WSK WSK1 WSK3 WSK2 1 1.1 1.2 2.1 2.2 2 1.1 1.2 2.1 2.2 3 1.1 1.2 2.1 2.2 4 1.1 1.2 2.1 2.2 6 1.1 1.2 2.1 2.2 6 1.1 1.2.. 20

Sklejanie zbiorów: sklejanie z dopasowaniem MERGE zbior1 zbior2... ; BY zmienna1 zmienna2... ; DATA razem; MERGE zbior1 zbior2; BY mies; MIES WSK WSK1 WSK2 1 2.1 1.2 2.2 2 2.1 1.2 2.2 3 2.1 1.2 2.2 4 2.1 1.2 2.2 5 1.1 1.2. 6 2.1 1.2 2.2 Transpozycja: zbiór danych jako macierz 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 COL1 COL2 COL3 COL4 COL5 COL6 1 2 3 4 5 6 1.1 1.2 1.3 1.4 1.5 1.6 2.1 2.2 2.3 2.4 2.5 2.6 21

Transpozycja: procedura TRANSPOSE PROC TRANSPOSE DATA=zbiór_wejściowy OUT=zbiór_wynikowy <PREFIX=prefix> ; <BY zm_gupujące ;> <VAR zm_transponowane ;> <ID zm_z_nazwami ;> zbiór_wejściowy zbiór_wynikowy prefix zm_grupujące zbiór, na którym wykonywana jest transpozycja zbiór zawierający rezultat wykonanej transpozycji prefix dodawany przed nazwami nowo tworzonych zmiennych lista zmiennych wyznaczających grupy w jakich wykonywana jest transpozycja zm_transponowane lista zmiennych, dla których wykonywana jest transpozycja zm_z_nazwami zmienna w transponowanym zbiorze, która zawiera nazwy nadawane nowo tworzonym zmiennym Transpozycja: prosta transpozycja ROK KWARTAL SUMA1 SUMA2 1995 1 5.11 5.12 1995 2 5.21 5.22 1995 3 5.31 5.32 1995 4 5.41 5.42 1996 1 6.11 6.12 1996 2 6.21 6.22 1996 3 6.31 6.32 1996 4 6.41 6.42 PROC TRANSPOSE DATA=kurs.sumy OUT=tsumy; _NAME_ COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 ROK 1995 1995 1995 1995 1996 1996 1996 1996 KWARTAL 1 2 3 4 1 2 3 4 SUMA1 5.11 5.21 5.31 5.41 6.11 6.21 6.31 6.41 SUMA2 5.12 5.22 5.32 5.42 6.12 6.22 6.32 6.42 22

Transpozycja: transpozycja w grupach PROC TRANSPOSE DATA=kurs.sumy OUT=tsumy; BY rok; ROK _NAME_ COL1 COL2 COL3 COL4 1995 KWARTAL 1 2 3 4 1995 SUMA1 5.11 5.21 5.31 5.41 1995 SUMA2 5.12 5.22 5.32 5.42 1996 KWARTAL 1 2 3 4 1996 SUMA1 6.11 6.21 6.31 6.41 1996 SUMA2 6.12 6.22 6.32 6.42 Aby wykonać transpozycję w grupach, zbiór wejściowy musi być odpowiednio posortowany lub poindeksowany. Transpozycja: wykorzystanie zmiennej z nazwami PROC TRANSPOSE DATA=kurs.sumy OUT=tsumy; BY rok; ID kwartal; VAR suma1; ROK _NAME 1 _2 _3 _4 1995 SUMA1 5.11 5.21 5.31 5.41 1996 SUMA1 6.11 6.21 6.31 6.41 23

Transpozycja: prefix nazw tworzonych zmiennych PROC TRANSPOSE DATA=kurs.sumy OUT=tsumy (DROP=_name_) PREFIX=kwartal; BY rok; ID kwartal; VAR suma1; ROK KWARTAL1 KWARTAL2 KWARTAL3 KWARTAL4 1995 5.11 5.21 5.31 5.41 1996 6.11 6.21 6.31 6.41 PROC TRANSPOSE DATA=kurs.sumy OUT=tsumy (DROP=_name_) PREFIX=kwartal; BY rok; ID kwartal; IDLABEL kwartal; VAR suma1; Transpozycja: zmienne tekstowe i numeryczne PROC TRANSPOSE DATA=sashelp.class OUT=tclass ; VAR name age; _NAME_ COL1 COL2 COL3 Name Alfred Alice Barbara Age 14 13 13 Przy jednoczesnej transpozycji zmiennych tekstowych i numerycznych dokonywana jest automatyczna konwersja liczb na ciągi tekstu. 24

Formaty Zapis binarny liczby 12 w zbiorze danych: 0100000000101000000000000000000000000000000000000000000000000000 Różne formy prezentacji liczby 12: 12 twelve 12.0 12,00 0012 1.2e1 XII grudzień 0C $12 12%... 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: numer miesiac 12.500,67 07 25

Formaty: tymczasowe przypisanie formatu PROC...; FORMAT zmienna1 format1. zmienna2 format2....; PROC PRINT DATA=zbior NOOBS; FORMAT miesiac roman.; Wynik w OUTPUT: numer miesiac 12.500,67 VII Formaty: inne użycie PUT zmienna format....; /* instrukcja */ PUT(argument,format.) /* funkcja */ Przykłady: DATA _NULL_; FILE 'test.txt'; a=12; PUT a BINARY.; DATA test; a=12; b=put(a, BINARY.); 26

Formaty systemowe SAS: formaty tekstowe $w. $BINARYw. $CHARw. $HEXw. $OCTALw. $VARYINGw. Towar 0101010001101111011101 110110000101110010 Towar 546F776172 124157167141162 Towar Formaty systemowe SAS: formaty numeryczne BESTw. w.d BINARYw. COMMAw.d COMMAXw.d DOLLARw.d Ew. FRACTw. HEXw. NEGPARENw.d OCTALw. PERCENTw.d ROMANw. WORDFw. WORDSw. Zw.d 2000.5 2000.50 11010000 2,000.50 2.000,50 $2,000.50 2.00050E+03 2000+1/2 000007D0 2,001 720 200050% MM two thousand and 50/100 two thousand and fifty hundredths 002001 27

Formaty systemowe SAS: formaty daty i czasu DATEw. DATETIMEw.d DAYw. DDMMYYw. DOWNAMEw. HHMMw.d HOURw.d MMDDYYw. MMSSw.d MONNAMEw. MONTHw. MONYYw. QTRw. TIMEw.d WEEKDAYw. YEARw. 13APR2009 01JAN60:05:00:00 13 13/04/09 Monday 5:00 5 04/13/2009 300:00 April 4 APR09 2 5:00:00 2 2009 Formaty: separator daty Zmiana domyślnego separatora daty Przykłady: Wynik w LOGu: DATA _NULL_; a='12dec2003'd; b='02jan1999'd; PUT a DDMMYY10.; PUT b DDMMYY10.; DATA _NULL_; a='12dec2003'd; b='02jan1999'd; PUT a DDMMYYP10.; PUT b DDMMYYP10.; 12/12/2003 02/01/1999 12.12.2003 02.01.1999 28

Formaty: formaty użytkownika Zbiór: Raport: KLIENT TOWAR WARTOSC ILOSC 123 13 124.11 5 13 24 34.2 1 220 17 5.31 1 5 24 225.1 52 123 1 6.1 2 KLIENT TOWAR WARTOSC ILOSC PPH KOALA PLUS MYDŁO KAMA 124.11 5 REMBIESZ S.A. SZAMPON 2+1 34.20 1 ULTRA SP.z O.O. KRET DO RUR 5.31 1 POLSTOP S.C. SZAMPON 2+1 225.10 52 PPH KOALA PLUS PUMEKS 6.10 2 Formaty: procedura FORMAT PROC FORMAT <LIB=biblioteka> <CNTLIN=zbiór_definicyjny> <FMTLIB>; <VALUE nazwa zakres1 = wartość_sformatowana1... zakresn = wartość_sformatowanan ; > biblioteka zbiór definicyjny nazwa zakres biblioteka w której ma być zapisana definicja formatu (domyślnie w WORK) opcjonalny zbiór z definicją formatu nazwa tworzonego formatu zakres wartości przed sformatowaniem wartość_sformatowana wartość po sformatowaniu 29

Formaty: definiowanie zakresów start - end = wartość_sformatowana start <- end = wartość_sformatowana start -< end = wartość_sformatowana start = wartość_sformatowana HIGH LOW OTHER = wartość_sformatowana PROC FORMAT; VALUE oddzial 0 = 'Centrala' 1 = 'Oddział 1' 2 = 'Oddział 2' OTHER = 'Błędny kod!' ; Agregowanie danych: procedury agregujące Statystyki opisowe: częstość wystąpień suma średnia wartość minimalna wartość maksymalna odchylenie standardowe wariancja udziały procentowe... PROC FREQ... PROC SUMMARY... PROC MEANS... PROC UNIVARIATE... 30

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 Agregowanie danych: tablice częstości typu One- Way Raport w oknie OUTPUT: Cumulative Cumulative PLEC Frequency Percent Frequency Percent --------------------------------------------------------------- Chłopiec 3 60.00 3 60.00 Dziewczyna 2 40.00 5 100.00 Cumulative Cumulative WIEK Frequency Percent Frequency Percent --------------------------------------------------------- 13 2 40.00 2 40.00 14 3 60.00 5 100.00 31

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 32

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 Podział na grupy klasyfikacyjne wg podanych zmiennych za pomocą CLASS lub BY. Instrukcja CLASS: nie wymaga posortowania zbioru najlepiej działa dla zmiennych o niewielkiej liczbie możliwych wartości wyznaczających grupy może działać szybciej niż BY dla małych zbiorów danych Instrukcja BY: wymaga odpowiedniego posortowania zbioru może być wykorzystywana dla dowolnie dużej liczby grup klasyfikacyjnych może działać szybciej niż CLASS dla dużych zbiorów danych 33

Agregowanie danych: procedura MEANS Opcje instrukcji CLASS: ORDER = INTERNAL FORMATTED DATA FREQ - specyfikuje porządek sortowania dla poszczególnych poziomów zmiennych klasyfikujących występujących w zbiorze wyjściowym. DESCENDING - współpracuje z opcją ORDER. Wymusza porządek malejący, zamiast domyślnego rosnącego. MISSING - braki danych tworzą równoprawne grupy dla podanych zmiennych klasyfikujących. GROUPINTERNAL - zapobiega przypisywaniu formatów do zmiennych klasyfikujących, w momencie przygotowywania przez PROC MEANS kombinacji zmiennych klasyfikujących. Opcja ta zaoszczędza zasoby systemowe, gdy zmienne klasyfikujące składają się z dyskretnych wartości numerycznych. 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 ------------------------------------------------- 34

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 35

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 ; 36