Advertisement
Guest User

lab2

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