Advertisement
Guest User

Lab1 SAS

a guest
Dec 1st, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* 4GL */
  2. * jahsjhjahsd ;
  3. /* aby uruchomiж F3 lub ludzik */
  4.  
  5. libname b "C:\Users\student\Desktop\BI";
  6.  
  7. /* 1*/
  8. data b.audi ; /*data - utwуrz tabele*/
  9. set sashelp.cars ; /* set -pobierz */
  10. where UPCASE(make)="AUDI" ;
  11. RUN ;
  12.  
  13. /* 2 */
  14. /* wybraж audi i bmw, oraz zapisaж kolumny
  15. make, model, invoice */
  16. /* keep vs drop */
  17. data b.audi_bmw (keep=make model invoice );
  18. set sashelp.cars ;
  19. where UPCASE(make) in ("AUDI","BMW") ;
  20. run ;
  21. /* 3 */
  22. /* jak dodaж now№ kolumnк NOWA_CENA, ktуra np. stanowi 80%
  23. wartoњci kolumny invoice */
  24.  
  25. data b.audi_bmw_nowa_cena ;
  26. set b.audi_bmw ;
  27. nowa_cena = invoice*0.8 ;
  28. format nowa_cena DOLLAR8. ;
  29. run;
  30.  
  31. /* 4 - if then else */
  32. data b.kat_cenowa ;
  33. set sashelp.cars ;
  34. length kat_cenowa $6 ;
  35. if invoice<50000 then kat_cenowa='tanie';
  36. else kat_cenowa='drogie';
  37. run;
  38.  
  39. /* 5 */
  40. /* jak znalezc najtansze auto w tabeli */
  41. /* sortowanie */
  42. proc sort data=sashelp.cars out=b.cars_sort ;
  43. by /*descending*/invoice ;
  44. run ;
  45. data b.najtansze;
  46. set b.cars_sort ;
  47. if _N_=1 ; /* numerator */
  48. run ;
  49.  
  50. /* 6 - przetwarzanie w grupach */
  51.  
  52. proc sort data=b.cars_sort ;
  53. by make  ;
  54. run ;
  55.  
  56. data b.group_by_make (keep= make licz suma) ;
  57. set b.cars_sort ;
  58. by make  ; /* grupowanie */
  59. if first.make then licz=0;
  60. if first.make then suma=0;
  61. licz+1;
  62. suma+invoice ;
  63. if last.make then output;
  64. run;
  65.  
  66. data b.group_by_make (keep= make licz suma) ;
  67. set b.cars_sort ;
  68. by make  ; /* grupowanie */
  69. if first.make then do ; licz=0; suma=0; end;
  70. licz+1;
  71. suma+invoice ;
  72. if last.make then output;
  73. run;
  74.  
  75. /* 7 daty w SAS */
  76. data b.dzis ;
  77. dzis=today();
  78. ile_up = today() - '05OCT1970'd ;
  79. ile_lat=ile_up/365.25 ;
  80. mies=month(dzis);
  81. dt=weekday(dzis);
  82. kw=qtr(dzis);
  83. run;
  84.  
  85. /* 8 */
  86. /* grupowanie i sumowanie po roku */
  87. data b.dane ;
  88. set sashelp.air ;
  89. rok=year(DATE);
  90. run;
  91. proc sort data=b.dane ;
  92. by rok ;
  93. run;
  94. data b.dane_by_rok ;
  95. set b.dane ;
  96. by rok ; /* grupowanie */
  97. if first.rok then suma_air=0;
  98. suma_air + AIR ;
  99. if last.rok ;
  100. run;
  101.  
  102. /* 9 */
  103. /* operacje na text */
  104.  
  105. data b.imiona_nazw2 ;
  106. set b.Imiona_nazw ;
  107. IMIE= scan(IMIE_NAZW,1,' ');
  108. NAZWISKO = scan(IMIE_NAZW,2,' ')    ;
  109. if substr(IMIE,length(IMIE),1)='a' then plec='K';
  110. else plec='M' ;
  111. run;
  112.  
  113.  
  114.  
  115. /*Ј№czenie tabel w sas 4GL */
  116.  
  117.  
  118. data b.tabela_A;
  119. do id=1 to 1000;
  120. kolumna_A='ABC';
  121. output;
  122. end;
  123. run;
  124.  
  125. data b.tabela_B;
  126. do numer=1 to 1200 by 10;
  127. kolumna_B=123;
  128. output;
  129. end;
  130. run;
  131.  
  132.  
  133. /* taki sam klucz(nazwa takiej samej kolumny)  /  posortowane kolumny  /  merge */
  134. /*sortowanie*/
  135.  
  136. proc sort data=b.tabela_A ;
  137. by id ;run ;
  138.  
  139. proc sort data=b.tabela_B ;
  140. by numer ;run ;
  141.  
  142. /*laczenie */
  143.  
  144. data b.join_A_B;
  145. merge b.tabela_a (in =a )                          /*alias*/
  146.       b.tabela_b (rename=(numer=id) in=b ) ;
  147. by id ;                                        /*kolumny do і№czenia */
  148. if a=b ;
  149. run;
  150.  
  151.  
  152. data b.left_join_A_B;
  153. merge b.tabela_a (in =a )                          /*alias*/
  154.       b.tabela_b (rename=(numer=id) in=b ) ;
  155. by id ;                                        /*kolumny do і№czenia */
  156. if a ;
  157. run;
  158.  
  159. data b.inny_join_A_B;
  160. merge b.tabela_a (in =a )                          /*alias*/
  161.       b.tabela_b (rename=(numer=id) in=b ) ;
  162. by id ;                                        /*kolumny do і№czenia */
  163. if a=1 and b=0 ;
  164. run;
  165.  
  166.  
  167. libname c "C:\Users\student\Desktop\BIBL";
  168.  
  169.  
  170. /*liczba wypozyczonych ksiazek dla kazdego czytelnika */
  171.  
  172. data c.wyp_czyt (keep = CZYTELNIK_ID SUMA);
  173. set c.Wypozyczenia;
  174. by CZYTELNIK_ID;
  175. if first.CZYTELNIK_ID then suma=0 ;
  176. suma+1;
  177. if last.CZYTELNIK_ID then output;
  178. run;
  179.  
  180.  
  181. data c.wyp_czyt_join (keep = ID  CZYTELNIK_NAZWISKO SUMA CZYTELNIK_IMIE ADRES) ;
  182. merge c.Wyp_czyt (rename=(CZYTELNIK_ID=ID) in=w)
  183.       c.Czytelnik (in =r) ;
  184.       by ID;
  185.       if w=r;
  186. run;
  187.  
  188.  
  189. /* wybierz 10 najchetniej wypozyczanych ksiazek
  190.    podaj liczbe wypozyczen i tytul ksiazki */
  191.  
  192. proc sort data=c.Wypozyczenia ;
  193. by KSIAZKA_SYGNATURA ;run ;
  194.  
  195. data c.top_ten (keep = suma KSIAZKA_SYGNATURA) ;
  196. set c.Wypozyczenia;
  197. by KSIAZKA_SYGNATURA;
  198. if first.KSIAZKA_SYGNATURA then suma=0 ;
  199. suma+1;
  200. if last.KSIAZKA_SYGNATURA then output;
  201. run;
  202.  
  203.  
  204. proc sort data=c.top_ten ;
  205. by  KSIAZKA_SYGNATURA ;run ;
  206. proc sort data=c.Ksiazka ;
  207. by  SYGNATURA ;run ;
  208.  
  209. data c.top_ten1 (keep= suma TYTUL);
  210.  
  211. merge c.top_ten (rename=(KSIAZKA_SYGNATURA=SYGNATURA) in=w)
  212.       c.Ksiazka (in =r) ;
  213.       by SYGNATURA;
  214.     if w=r;
  215. run;
  216. proc sort data=c.top_ten1 ;
  217. by  descending suma ;
  218.  
  219. run ;
  220.  
  221. data c.top_ten_wynik;
  222. set c.top_ten1;
  223. if _N_<11;
  224. run;
  225.  
  226.  
  227.  
  228.  
  229.  
  230. /***3***/
  231. proc sort data=c.Wypozyczenia ;
  232. by CZYTELNIK_ID ;
  233.  
  234. run ;
  235. /* '05OCT1970'd */
  236. data c.ile;
  237. set c.Wypozyczenia;
  238. WHERE DATA_WYPOZYCZENIA<'01SEP2007'd and (DATA_ODDANIA>'01SEP2007'd or DATA_ODDANIA=.);
  239.  
  240. run;
  241.  
  242. data c.do_1_zlicz (keep = CZYTELNIK_ID licz);
  243. set c.ile;
  244. by CZYTELNIK_ID ;
  245. if first.CZYTELNIK_ID then licz=0;
  246. licz+1;
  247. if last.CZYTELNIK_ID;
  248. run;
  249.  
  250.  
  251.  
  252. /* zliczyc ile ksiazek wydanych w danym roku */
  253. proc sort data=c.Ksiazka ;
  254. by ROK_WYDANIA ;
  255.  
  256. run ;
  257.  
  258. data c.zlicz_ksiazki(keep = SYGNATURA CENA okres);
  259. set c.Ksiazka;
  260. length okres $ 12;
  261.  
  262. if ROK_WYDANIA<=1990 then okres='do 1990';
  263.  
  264. else if ROK_WYDANIA<=2000 okres='do 2000';
  265.  
  266. else okres='po 2000';
  267. if ROK_WYDANIA=. then okres='brak danych';
  268.  
  269. run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement