Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* 4GL */
- * jahsjhjahsd ;
- /* aby uruchomiж F3 lub ludzik */
- libname b "C:\Users\student\Desktop\BI";
- /* 1*/
- data b.audi ; /*data - utwуrz tabele*/
- set sashelp.cars ; /* set -pobierz */
- where UPCASE(make)="AUDI" ;
- RUN ;
- /* 2 */
- /* wybraж audi i bmw, oraz zapisaж kolumny
- make, model, invoice */
- /* keep vs drop */
- data b.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 b.audi_bmw_nowa_cena ;
- set b.audi_bmw ;
- nowa_cena = invoice*0.8 ;
- format nowa_cena DOLLAR8. ;
- run;
- /* 4 - if then else */
- data b.kat_cenowa ;
- set sashelp.cars ;
- length kat_cenowa $6 ;
- if invoice<50000 then kat_cenowa='tanie';
- else kat_cenowa='drogie';
- run;
- /* 5 */
- /* jak znalezc najtansze auto w tabeli */
- /* sortowanie */
- proc sort data=sashelp.cars out=b.cars_sort ;
- by /*descending*/invoice ;
- run ;
- data b.najtansze;
- set b.cars_sort ;
- if _N_=1 ; /* numerator */
- run ;
- /* 6 - przetwarzanie w grupach */
- proc sort data=b.cars_sort ;
- by make ;
- run ;
- data b.group_by_make (keep= make licz suma) ;
- set b.cars_sort ;
- by make ; /* grupowanie */
- if first.make then licz=0;
- if first.make then suma=0;
- licz+1;
- suma+invoice ;
- if last.make then output;
- run;
- data b.group_by_make (keep= make licz suma) ;
- set b.cars_sort ;
- by make ; /* grupowanie */
- if first.make then do ; licz=0; suma=0; end;
- licz+1;
- suma+invoice ;
- if last.make then output;
- run;
- /* 7 daty w SAS */
- data b.dzis ;
- dzis=today();
- ile_up = today() - '05OCT1970'd ;
- ile_lat=ile_up/365.25 ;
- mies=month(dzis);
- dt=weekday(dzis);
- kw=qtr(dzis);
- run;
- /* 8 */
- /* grupowanie i sumowanie po roku */
- data b.dane ;
- set sashelp.air ;
- rok=year(DATE);
- run;
- proc sort data=b.dane ;
- by rok ;
- run;
- data b.dane_by_rok ;
- set b.dane ;
- by rok ; /* grupowanie */
- if first.rok then suma_air=0;
- suma_air + AIR ;
- if last.rok ;
- run;
- /* 9 */
- /* operacje na text */
- data b.imiona_nazw2 ;
- set b.Imiona_nazw ;
- IMIE= scan(IMIE_NAZW,1,' ');
- NAZWISKO = scan(IMIE_NAZW,2,' ') ;
- if substr(IMIE,length(IMIE),1)='a' then plec='K';
- else plec='M' ;
- run;
- /*Ј№czenie tabel w sas 4GL */
- data b.tabela_A;
- do id=1 to 1000;
- kolumna_A='ABC';
- output;
- end;
- run;
- data b.tabela_B;
- do numer=1 to 1200 by 10;
- kolumna_B=123;
- output;
- end;
- run;
- /* taki sam klucz(nazwa takiej samej kolumny) / posortowane kolumny / merge */
- /*sortowanie*/
- proc sort data=b.tabela_A ;
- by id ;run ;
- proc sort data=b.tabela_B ;
- by numer ;run ;
- /*laczenie */
- data b.join_A_B;
- merge b.tabela_a (in =a ) /*alias*/
- b.tabela_b (rename=(numer=id) in=b ) ;
- by id ; /*kolumny do і№czenia */
- if a=b ;
- run;
- data b.left_join_A_B;
- merge b.tabela_a (in =a ) /*alias*/
- b.tabela_b (rename=(numer=id) in=b ) ;
- by id ; /*kolumny do і№czenia */
- if a ;
- run;
- data b.inny_join_A_B;
- merge b.tabela_a (in =a ) /*alias*/
- b.tabela_b (rename=(numer=id) in=b ) ;
- by id ; /*kolumny do і№czenia */
- if a=1 and b=0 ;
- run;
- libname c "C:\Users\student\Desktop\BIBL";
- /*liczba wypozyczonych ksiazek dla kazdego czytelnika */
- data c.wyp_czyt (keep = CZYTELNIK_ID SUMA);
- set c.Wypozyczenia;
- by CZYTELNIK_ID;
- if first.CZYTELNIK_ID then suma=0 ;
- suma+1;
- if last.CZYTELNIK_ID then output;
- run;
- data c.wyp_czyt_join (keep = ID CZYTELNIK_NAZWISKO SUMA CZYTELNIK_IMIE ADRES) ;
- merge c.Wyp_czyt (rename=(CZYTELNIK_ID=ID) in=w)
- c.Czytelnik (in =r) ;
- by ID;
- if w=r;
- run;
- /* wybierz 10 najchetniej wypozyczanych ksiazek
- podaj liczbe wypozyczen i tytul ksiazki */
- proc sort data=c.Wypozyczenia ;
- by KSIAZKA_SYGNATURA ;run ;
- data c.top_ten (keep = suma KSIAZKA_SYGNATURA) ;
- set c.Wypozyczenia;
- by KSIAZKA_SYGNATURA;
- if first.KSIAZKA_SYGNATURA then suma=0 ;
- suma+1;
- if last.KSIAZKA_SYGNATURA then output;
- run;
- proc sort data=c.top_ten ;
- by KSIAZKA_SYGNATURA ;run ;
- proc sort data=c.Ksiazka ;
- by SYGNATURA ;run ;
- data c.top_ten1 (keep= suma TYTUL);
- merge c.top_ten (rename=(KSIAZKA_SYGNATURA=SYGNATURA) in=w)
- c.Ksiazka (in =r) ;
- by SYGNATURA;
- if w=r;
- run;
- proc sort data=c.top_ten1 ;
- by descending suma ;
- run ;
- data c.top_ten_wynik;
- set c.top_ten1;
- if _N_<11;
- run;
- /***3***/
- proc sort data=c.Wypozyczenia ;
- by CZYTELNIK_ID ;
- run ;
- /* '05OCT1970'd */
- data c.ile;
- set c.Wypozyczenia;
- WHERE DATA_WYPOZYCZENIA<'01SEP2007'd and (DATA_ODDANIA>'01SEP2007'd or DATA_ODDANIA=.);
- run;
- data c.do_1_zlicz (keep = CZYTELNIK_ID licz);
- set c.ile;
- by CZYTELNIK_ID ;
- if first.CZYTELNIK_ID then licz=0;
- licz+1;
- if last.CZYTELNIK_ID;
- run;
- /* zliczyc ile ksiazek wydanych w danym roku */
- proc sort data=c.Ksiazka ;
- by ROK_WYDANIA ;
- run ;
- data c.zlicz_ksiazki(keep = SYGNATURA CENA okres);
- set c.Ksiazka;
- length okres $ 12;
- if ROK_WYDANIA<=1990 then okres='do 1990';
- else if ROK_WYDANIA<=2000 okres='do 2000';
- else okres='po 2000';
- if ROK_WYDANIA=. then okres='brak danych';
- run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement