Advertisement
Guest User

lab last

a guest
Nov 3rd, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*  SAS 4GL */
  2.  
  3. /* przypisanie biblioteki */
  4. libname s "C:\Users\student\Desktop\SAS BI";
  5.  
  6. /* aby uruchomic */
  7. /* F3 lub biegnący ludzik */
  8.  
  9. /* 1 */
  10.  /* z biblioteki sashelp pobrac tabele cars
  11. i zmipisac w bibliotece S jako auta */
  12.  
  13. data s.auta ; /* data - utwórz tabele*/
  14. SET SASHELP.CARS ; /*set - pobierz z */
  15. run ; /* koniec bloku kodu do przetworzenia*/
  16.  
  17. /* 2 */
  18. /* z tabeli sashelp CARS wybrać audi i bmw,
  19. oraz zapisać kolumny
  20. make, model, invoice */
  21. /* keep vs drop */
  22.  
  23. data s.audi_bmw (keep= make model invoice);
  24. set sashelp.cars ;
  25. where UPCASE(Make) in ('AUDI', 'BMW');
  26. run;
  27.  
  28. /* 3 */
  29. /* jak dodać nową kolumnę NOWA_CENA,
  30. która np. stanowi 80%
  31. wartości kolumny invoice */
  32. data s.audi_bmw_nowa_cena ;
  33. set s.audi_bmw ;
  34. nowa_cena = invoice * 0.8;
  35. format nowa_cena DOLLAR8. ;
  36. run;
  37.  
  38. /* 4 - if then else */
  39. /* jezeli cena pojazdu <50000 to dajemy
  40. etykiete 'tanie', w przec wypadku 'drogie' */
  41. data s.tanie_drogie
  42.         (keep=make model invoice kategoria) ;
  43. set sashelp.cars ;
  44. length kategoria $7 ;
  45. if invoice<50000 then kategoria='tanie';
  46. else if invoice<70000 then kategoria='średnie';
  47. else kategoria='drogie';
  48. run ;
  49.  
  50. /* 5 */
  51. /* jak znalezc najtansze auto w tabeli */
  52. /* sortowanie */
  53.  
  54. proc sort data=s.auta ;
  55. by invoice;/* domyslne rosnaco*/
  56. run;
  57.  
  58. data s.najtansze ;
  59. set s.auta ;
  60. if _N_=1 ; /*_N_ - numerator */
  61. run ;
  62.  
  63. /* 6 - przetwarzanie w grupach */
  64. /* zlicz pojazdy dla danej marki */
  65. proc sort data=s.auta ;
  66. by make ;
  67. run;
  68. data s.count_by_make (keep= make licz wartosc ) ;
  69. set s.auta ;
  70. by make ; /* group by */
  71. if first.make then licz=0;
  72. if first.make then wartosc=0;
  73. licz+1;
  74. wartosc+invoice;
  75. if last.make then output;
  76. run;
  77. /* wer 2 */
  78. data s.count_by_make (keep= make licz wartosc ) ;
  79. set s.auta ;
  80. by make ; /* group by */
  81. if first.make then do;
  82. licz=0 ; wartosc=0 ;
  83. end;
  84. licz+1;
  85. wartosc+invoice;
  86. if last.make then output;
  87. run;
  88.  
  89. /* 7 daty w SAS */
  90. data s.daty_w_sas ;
  91. dzis=today();
  92. format dzis ddmmyy10. ;
  93. mies=month(dzis);
  94. rok=year(dzis);
  95. dt=weekday(dzis);
  96. dzien=day(dzis);
  97. run;
  98. /* 8 */
  99. /* na podstawie tabeli sashelp.AIR
  100. zlicz sumę przewozów w podziale na lata */
  101.  
  102. data s.air ;
  103. set sashelp.AIR ;
  104. rok =year(DATE);
  105. run;
  106. proc sort data=s.air ;
  107. by rok;
  108. run;
  109. data s.air_by_rok (keep=rok suma_przewozow);
  110. set s.air ;
  111. by rok;
  112. if first.rok then suma_przewozow=0;
  113. suma_przewozow + AIR ;
  114. if last.rok then output;
  115. run;
  116. /* textowe */
  117. data s.Tekstowe2 ;
  118. set s.Tekstowe ;
  119. IMIE=scan(IMIE_NAZW,1,' ') ;
  120. NAZWISKO=scan(IMIE_NAZW,2,' ') ;
  121. /* ustal plec osoby*/
  122. /*litera=substr(IMIE,length(IMIE),1);*/
  123. if substr(IMIE,length(IMIE),1)='a' then plec='K';
  124. else plec='M';
  125. TELEFON=compress(TEL,'()+- ');
  126. run;
  127.  
  128. /* łaczenie tabel w skladni sas 4gl */
  129.  
  130. data s.tabela_A ;
  131. do id=1 to 1000;
  132. kolumna_A='ABC';
  133. output;
  134. end;
  135. run;
  136.  
  137. data s.tabela_B ;
  138. do klucz=1 to 1200 by 10;
  139. kolumna_B='123';
  140. output;
  141. end;
  142. run;
  143.  
  144. /* dane posortowane */
  145. data s.tabele_join ;
  146. merge s.tabela_A (in=a )
  147.         s.tabela_B (rename=(klucz=id) in=b );
  148. by id ; /* kolumny do laczenia*/
  149. if a=b ; /* zlaczona czesc wspolna */
  150. run ;
  151.  
  152. /* lewostronne */
  153. data s.tabele_join_left ;
  154. merge s.tabela_A (in=a )
  155.         s.tabela_B (rename=(klucz=id) in=b );
  156. by id ; /* kolumny do laczenia*/
  157. if a ; /* zlaczenie lewostronne */
  158. run ;
  159.  
  160. /* inne */
  161. data s.tabele_join_inne ;
  162. merge s.tabela_A (in=a )
  163.         s.tabela_B (rename=(klucz=id) in=b );
  164. by id ; /* kolumny do laczenia*/
  165. if a=1 and b=0 ; /* zlaczenie lewostronne */
  166. run ;
  167.  
  168. libname b "C:\Users\student\Desktop\BIBL";
  169.  
  170. /* ustal kto na dzień 1 sierpnia 2007 roku nie posiadał nie oddane ksiazki */
  171.  
  172. data b.nie_oddane ;
  173. set b.Wypozyczenia ;
  174. where DATA_WYPOZYCZENIA <= '01AUG2007'd
  175.     and (DATA_ODDANIA>'01AUG2007'd or DATA_ODDANIA=. );
  176. run ;
  177.  
  178. /* na podstawie tabeli z pk1 zlicz nie oddane dla kazdego czytelnika */
  179.  
  180. proc sort data=b.Nie_oddane ;
  181. by CZYTELNIK_ID ;
  182. run;
  183.  
  184. data b.Nie_oddane_by_czytelnik
  185.     (keep=CZYTELNIK_ID licz);
  186. set b.Nie_oddane ;
  187. by CZYTELNIK_ID ;
  188. if first.CZYTELNIK_ID then licz=0;
  189. licz+1 ;
  190. if last.CZYTELNIK_ID then output;
  191. run;
  192.  
  193.  
  194. /* posortowac by czytelnik */
  195. proc sort data=b.nie_oddane_by_czytelnik ;
  196. by CZYTELNIK_ID ;
  197. run ;
  198.  
  199. proc sort data=b.Czytelnik ;
  200. by ID ;
  201. run ;
  202.  
  203. data b.nie_oddane_imie_nazw (keep = ID licz CZYTELNIK_IMIE CZYTELNIK_NAZWISKO) ;
  204. merge b.Czytelnik (in=a)
  205. b.nie_oddane_by_czytelnik (in=b rename=(CZYTELNIK_ID=ID));
  206. by ID ;
  207. if a=b;
  208. run;
  209.  
  210. /*4) Podaj 5 czytelnikow z najwieksza liczbą wypożyczeń*/
  211.  
  212. proc sort data=b.Wypozyczenia;
  213. by CZYTELNIK_ID;
  214. run;
  215. data b.wyp_by_czytt (keep=CZYTELNIK_ID licz) ;
  216. set b.Wypozyczenia ;
  217. by CZYTELNIK_ID ;
  218. if first.CZYTELNIK_ID then licz=0;
  219. licz+1;
  220. if last.CZYTELNIK_ID then output;
  221. run;
  222.  
  223. proc sort data=b.wyp_by_czyt;
  224. by descending licz;
  225. run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement