Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* SAS 4GL */
- /* przypisanie biblioteki */
- libname s "C:\Users\student\Desktop\SAS BI";
- /* aby uruchomic */
- /* F3 lub biegnący ludzik */
- /* 1 */
- /* z biblioteki sashelp pobrac tabele cars
- i zmipisac w bibliotece S jako auta */
- data s.auta ; /* data - utwórz tabele*/
- SET SASHELP.CARS ; /*set - pobierz z */
- run ; /* koniec bloku kodu do przetworzenia*/
- /* 2 */
- /* z tabeli sashelp CARS wybrać audi i bmw,
- oraz zapisać kolumny
- make, model, invoice */
- /* keep vs drop */
- data s.audi_bmw (keep= make model invoice);
- set sashelp.cars ;
- where UPCASE(Make) in ('AUDI', 'BMW');
- run;
- /* 3 */
- /* jak dodać nową kolumnę NOWA_CENA,
- która np. stanowi 80%
- wartości kolumny invoice */
- data s.audi_bmw_nowa_cena ;
- set s.audi_bmw ;
- nowa_cena = invoice * 0.8;
- format nowa_cena DOLLAR8. ;
- run;
- /* 4 - if then else */
- /* jezeli cena pojazdu <50000 to dajemy
- etykiete 'tanie', w przec wypadku 'drogie' */
- data s.tanie_drogie
- (keep=make model invoice kategoria) ;
- set sashelp.cars ;
- length kategoria $7 ;
- if invoice<50000 then kategoria='tanie';
- else if invoice<70000 then kategoria='średnie';
- else kategoria='drogie';
- run ;
- /* 5 */
- /* jak znalezc najtansze auto w tabeli */
- /* sortowanie */
- proc sort data=s.auta ;
- by invoice;/* domyslne rosnaco*/
- run;
- data s.najtansze ;
- set s.auta ;
- if _N_=1 ; /*_N_ - numerator */
- run ;
- /* 6 - przetwarzanie w grupach */
- /* zlicz pojazdy dla danej marki */
- proc sort data=s.auta ;
- by make ;
- run;
- data s.count_by_make (keep= make licz wartosc ) ;
- set s.auta ;
- by make ; /* group by */
- if first.make then licz=0;
- if first.make then wartosc=0;
- licz+1;
- wartosc+invoice;
- if last.make then output;
- run;
- /* wer 2 */
- data s.count_by_make (keep= make licz wartosc ) ;
- set s.auta ;
- by make ; /* group by */
- if first.make then do;
- licz=0 ; wartosc=0 ;
- end;
- licz+1;
- wartosc+invoice;
- if last.make then output;
- run;
- /* 7 daty w SAS */
- data s.daty_w_sas ;
- dzis=today();
- format dzis ddmmyy10. ;
- mies=month(dzis);
- rok=year(dzis);
- dt=weekday(dzis);
- dzien=day(dzis);
- run;
- /* 8 */
- /* na podstawie tabeli sashelp.AIR
- zlicz sumę przewozów w podziale na lata */
- data s.air ;
- set sashelp.AIR ;
- rok =year(DATE);
- run;
- proc sort data=s.air ;
- by rok;
- run;
- data s.air_by_rok (keep=rok suma_przewozow);
- set s.air ;
- by rok;
- if first.rok then suma_przewozow=0;
- suma_przewozow + AIR ;
- if last.rok then output;
- run;
- /* textowe */
- data s.Tekstowe2 ;
- set s.Tekstowe ;
- IMIE=scan(IMIE_NAZW,1,' ') ;
- NAZWISKO=scan(IMIE_NAZW,2,' ') ;
- /* ustal plec osoby*/
- /*litera=substr(IMIE,length(IMIE),1);*/
- if substr(IMIE,length(IMIE),1)='a' then plec='K';
- else plec='M';
- TELEFON=compress(TEL,'()+- ');
- run;
- /* łaczenie tabel w skladni sas 4gl */
- data s.tabela_A ;
- do id=1 to 1000;
- kolumna_A='ABC';
- output;
- end;
- run;
- data s.tabela_B ;
- do klucz=1 to 1200 by 10;
- kolumna_B='123';
- output;
- end;
- run;
- /* dane posortowane */
- data s.tabele_join ;
- merge s.tabela_A (in=a )
- s.tabela_B (rename=(klucz=id) in=b );
- by id ; /* kolumny do laczenia*/
- if a=b ; /* zlaczona czesc wspolna */
- run ;
- /* lewostronne */
- data s.tabele_join_left ;
- merge s.tabela_A (in=a )
- s.tabela_B (rename=(klucz=id) in=b );
- by id ; /* kolumny do laczenia*/
- if a ; /* zlaczenie lewostronne */
- run ;
- /* inne */
- data s.tabele_join_inne ;
- merge s.tabela_A (in=a )
- s.tabela_B (rename=(klucz=id) in=b );
- by id ; /* kolumny do laczenia*/
- if a=1 and b=0 ; /* zlaczenie lewostronne */
- run ;
- libname b "C:\Users\student\Desktop\BIBL";
- /* ustal kto na dzień 1 sierpnia 2007 roku nie posiadał nie oddane ksiazki */
- data b.nie_oddane ;
- set b.Wypozyczenia ;
- where DATA_WYPOZYCZENIA <= '01AUG2007'd
- and (DATA_ODDANIA>'01AUG2007'd or DATA_ODDANIA=. );
- run ;
- /* na podstawie tabeli z pk1 zlicz nie oddane dla kazdego czytelnika */
- proc sort data=b.Nie_oddane ;
- by CZYTELNIK_ID ;
- run;
- data b.Nie_oddane_by_czytelnik
- (keep=CZYTELNIK_ID licz);
- set b.Nie_oddane ;
- by CZYTELNIK_ID ;
- if first.CZYTELNIK_ID then licz=0;
- licz+1 ;
- if last.CZYTELNIK_ID then output;
- run;
- /* posortowac by czytelnik */
- proc sort data=b.nie_oddane_by_czytelnik ;
- by CZYTELNIK_ID ;
- run ;
- proc sort data=b.Czytelnik ;
- by ID ;
- run ;
- data b.nie_oddane_imie_nazw (keep = ID licz CZYTELNIK_IMIE CZYTELNIK_NAZWISKO) ;
- merge b.Czytelnik (in=a)
- b.nie_oddane_by_czytelnik (in=b rename=(CZYTELNIK_ID=ID));
- by ID ;
- if a=b;
- run;
- /*4) Podaj 5 czytelnikow z najwieksza liczbą wypożyczeń*/
- proc sort data=b.Wypozyczenia;
- by CZYTELNIK_ID;
- run;
- data b.wyp_by_czytt (keep=CZYTELNIK_ID licz) ;
- set b.Wypozyczenia ;
- by CZYTELNIK_ID ;
- if first.CZYTELNIK_ID then licz=0;
- licz+1;
- if last.CZYTELNIK_ID then output;
- run;
- proc sort data=b.wyp_by_czyt;
- by descending licz;
- run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement