Advertisement
Guest User

Untitled

a guest
Jan 29th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* import danych */
  2. data loan;
  3. set tmp1.loan;
  4. run;
  5. data client;
  6. set tmp1.client;
  7. run;
  8. data disp;
  9. set tmp1.disp;
  10. run;
  11. data account;
  12. set tmp1.account;
  13. run;
  14. data card;
  15. set tmp1.card;
  16. run;
  17. data district;
  18. set tmp1.district;
  19. run;
  20. data order;
  21. set tmp1.order;
  22. run;
  23. data trans;
  24. set tmp1.trans;
  25. run;
  26.  
  27. /* zmienna zalezna */
  28. data loan2;
  29. set loan;
  30. If status in ('A', 'C') then default=0;
  31. If status in ('B', 'D') then default=1;
  32.  
  33.  
  34. proc sql;
  35. CREATE table datakredytu as
  36. SELECT loan.*, client.*, disp.*
  37.  
  38. FROM ((disp
  39. INNER JOIN loan ON disp.account_id = loan.account_id)
  40. INNER JOIN client ON disp.client_id = client.client_id)
  41. WHERE type = 'OWNER';
  42. quit;
  43.  
  44.  
  45.  
  46. data asd.zwiek(keep=client_id account_id birth_number date data_ur wiek plec where=(wiek>=18));
  47. set datakredytu;
  48. if (substrn(birth_number, 3, 2)  > 12) then
  49.     do;
  50.         plec = 1;
  51.         data_ur = INPUT(PUT((birth_number - 5000 + 19000000),8.),YYMMDD8.);
  52.         FORMAT data_ur YYMMDD8.;
  53.         wiek = floor((date - data_ur)/365);
  54.     end;
  55.     else
  56.     do;
  57.         plec = 0;
  58.         data_ur = INPUT(PUT((birth_number + 19000000),8.),YYMMDD8.);
  59.         FORMAT data_ur YYMMDD8.;
  60.         wiek = floor((date - data_ur)/365);
  61.     end;
  62. run;
  63.  
  64. proc sort data=asd.zwiek;
  65. by wiek;
  66. quit;
  67.  
  68. proc sql;
  69. CREATE table stazklienta as
  70. SELECT account.account_id, account.date as data_konta, client.*, disp.*, loan.date as data_pozyczki, loan.account_id
  71.  
  72. FROM (((disp
  73. INNER JOIN account ON disp.account_id = account.account_id)
  74. INNER JOIN loan ON loan.account_id = disp.account_id)
  75. INNER JOIN client ON disp.client_id = client.client_id)
  76. WHERE type = 'OWNER';
  77. quit;
  78.  
  79. data asd.stazklienta;
  80. set stazklienta;
  81. staz_dni = data_pozyczki - data_konta;
  82. run;
  83.  
  84. proc sql;
  85. CREATE table kartaczygold as
  86. SELECT card.disp_id, card.type as typ_karty, disp.disp_id, disp.type as typ_disp
  87.  
  88. FROM (disp
  89. INNER JOIN card ON disp.disp_id = card.disp_id)
  90. WHERE typ_disp = 'OWNER';
  91. quit;
  92.  
  93. data asd.kartagold;
  94. set kartaczygold;
  95.     if( typ_karty = 'gold') then
  96.     do;
  97.         czy_gold = 1;
  98.     end;
  99.     else
  100.     do;
  101.         czy_gold = 0;
  102.     end;
  103.    
  104. run;
  105.  
  106. data districtzid;
  107. set district(rename=(A1 = district_id));
  108. run;
  109.  
  110. proc sort data=districtzid;
  111. by district_id;
  112. run;
  113. proc sort data=client;
  114. by district_id;
  115. run;
  116.  
  117. data templiczbamieszsas;
  118. merge districtzid(in=districtzid) client(in=client);
  119. by district_id;
  120. run;
  121.  
  122. data asd.liczbamiesz(keep=client_id district_id liczba_mieszkancow);
  123. set templiczbamieszsas(rename=(A4 = liczba_mieszkancow));
  124. run;
  125.  
  126. data districtzid;
  127. set district(rename=(A1 = district_id));
  128. run;
  129.  
  130. proc sort data=districtzid;
  131. by district_id;
  132. run;
  133. proc sort data=client;
  134. by district_id;
  135. run;
  136.  
  137. data templiczbamiastsas;
  138. merge districtzid(in=districtzid) client(in=client);
  139. by district_id;
  140. run;
  141.  
  142. data asd.liczbamiast(keep=client_id district_id liczba_miast);
  143. set templiczbamiastsas(rename=(A9 = liczba_miast));
  144. run;
  145.  
  146. data districtzid;
  147. set district(rename=(A1 = district_id));
  148. run;
  149.  
  150. proc sort data=districtzid;
  151. by district_id;
  152. run;
  153. proc sort data=client;
  154. by district_id;
  155. run;
  156.  
  157. data tempsredniapensja;
  158. merge districtzid(in=districtzid) client(in=client);
  159. by district_id;
  160. run;
  161.  
  162. data asd.sredniapensja(keep=client_id district_id srednia_pensja);
  163. set tempsredniapensja(rename=(A11 = srednia_pensja));
  164. run;
  165.  
  166. data districtzid;
  167. set district(rename=(A1 = district_id));
  168. run;
  169.  
  170. proc sort data=districtzid;
  171. by district_id;
  172. run;
  173. proc sort data=client;
  174. by district_id;
  175. run;
  176.  
  177. data tempudzialmiastowych;
  178. merge districtzid(in=districtzid) client(in=client);
  179. by district_id;
  180. run;
  181.  
  182. data asd.udzialmiastowych(keep=client_id district_id udzial_miesz_miast);
  183. set tempudzialmiastowych(rename=(A10 = udzial_miesz_miast));
  184. run;
  185.  
  186. data districtzid;
  187. set district(rename=(A1 = district_id));
  188. run;
  189.  
  190. proc sort data=districtzid;
  191. by district_id;
  192. run;
  193. proc sort data=client;
  194. by district_id;
  195. run;
  196.  
  197. data tempwskprzedsiebiorcow;
  198. merge districtzid(in=districtzid) client(in=client);
  199. by district_id;
  200. run;
  201.  
  202. data asd.wskaprzedsiebiorcow(keep=client_id district_id wsk_przedsiebiorcow_1000);
  203. set tempwskprzedsiebiorcow(rename=(A14 = wsk_przedsiebiorcow_1000));
  204. run;
  205.  
  206. data districtzid;
  207. set district(rename=(A1 = district_id));
  208. run;
  209.  
  210. proc sort data=districtzid;
  211. by district_id;
  212. run;
  213. proc sort data=client;
  214. by district_id;
  215. run;
  216.  
  217. data tempbezrobocie;
  218. merge districtzid(in=districtzid) client(in=client);
  219. by district_id;
  220. run;
  221.  
  222. data asd.bezrob(keep=client_id district_id poziom_bezrobocia_95 poziom_bezrobocia_96 przyrost_bezrob_proc);
  223. set tempbezrobocie(rename=(A12 = poziom_bezrobocia_95 A13 = poziom_bezrobocia_96));
  224. przyrost_bezrob_proc = (poziom_bezrobocia_96/poziom_bezrobocia_95)*100;
  225. run;
  226.  
  227. proc sort data=account;
  228. by account_id;
  229. run;
  230. proc sort data=order;
  231. by account_id;
  232. run;
  233. data tempzlecstale;
  234. merge account(in=account) order(in=order);
  235. by account_id;
  236. run;
  237. data asd.zlecstale(keep=account_id );
  238. set tempzlecstale;
  239.  
  240. run;
  241.  
  242. data stale;
  243. set order;
  244. run;
  245.  
  246. proc sql;
  247. CREATE table zlecstale2ubezsipo as
  248. SELECT stale.account_id, sum(stale.amount) as laczne_wydatki_dom,
  249.         avg(stale.amount) as srednia_wydatki_ubez
  250.  
  251. FROM stale
  252. WHERE k_symbol = 'SIPO'
  253. GROUP BY stale.account_id;
  254. quit;
  255.  
  256. proc sql;
  257. CREATE table zlecstale2ubezpojistne as
  258. SELECT stale.account_id, sum(stale.amount) as laczne_wydatki_ubez,
  259.         avg(stale.amount) as srednia_wydatki_ubez
  260. FROM stale
  261. WHERE k_symbol = 'POJISTNE'
  262. GROUP BY stale.account_id;
  263. quit;
  264.  
  265. proc sql;
  266. CREATE table zlecstale2ubezleasing as
  267. SELECT stale.account_id, sum(stale.amount) as laczne_wydatki_leasing,
  268.         avg(stale.amount) as srednia_wydatki_leasing
  269. FROM stale
  270. WHERE k_symbol = 'LEASING'
  271. GROUP BY stale.account_id;
  272.  
  273. quit;
  274.  
  275. proc sql;
  276. create table ujemne_konto as
  277. select trans.account_id,
  278.         trans.date as date_trans, trans.k_symbol,
  279.         loan.account_id, loan.date as date_loan
  280. FROM (trans
  281.     INNER JOIN loan ON loan.account_id = trans.account_id)
  282.  
  283. where date_trans < date_loan
  284. group by loan.account_id, date_trans;
  285. quit;
  286.  
  287. data czydluznik;
  288. set ujemne_konto;
  289.     if( k_symbol = 'SANKC. UROK') then
  290.     do;
  291.         zm_czydluznik = 1;
  292.     end;
  293.     else
  294.     do;
  295.         zm_czydluznik = 0;
  296.     end;  
  297. run;
  298. data czydluznik2;
  299. set czydluznik;
  300. by account_id;
  301. if last.account_id then output;
  302. keep account_id zm_czydluznik;
  303. run;
  304.  
  305. proc sql;
  306. CREATE table trans_wplywy as
  307. SELECT account_id, sum(amount) as laczne_wplywy,
  308.         avg(amount) as srednie_wplywy
  309.  
  310. FROM trans
  311. WHERE type = 'PRIJEM'
  312. GROUP BY account_id;
  313. quit;
  314.  
  315. proc sql;
  316. CREATE table trans_wplywy_vklad as
  317. SELECT account_id, sum(amount) as laczne_wplywy_vklad,
  318.         avg(amount) as srednie_wplywy_vklad
  319.  
  320. FROM trans
  321. WHERE (type = 'PRIJEM' and operation = 'VKLAD')
  322. GROUP BY account_id;
  323. quit;
  324.  
  325. proc sql;
  326. CREATE table trans_wydatki as
  327. SELECT account_id, sum(amount) as laczne_wydatki,
  328.         avg(amount) as srednie_wydatki
  329.  
  330. FROM trans
  331. WHERE type = 'VYDAJ'
  332. GROUP BY account_id;
  333. quit;
  334.  
  335.  
  336.  
  337. proc sql;
  338. CREATE table trans_wydatki_vyberkart as
  339. SELECT account_id, sum(amount) as laczne_wydatki_vyberkart,
  340.         avg(amount) as srednie_wydatki_vyberkart
  341.  
  342. FROM trans
  343. WHERE (type = 'VYDAJ' and operation = 'VYBER KARTOU')
  344. GROUP BY account_id;
  345. quit;
  346.  
  347. proc sql;
  348. CREATE table trans_wydatki_vyber as
  349. SELECT account_id, sum(amount) as laczne_wydatki_vyber,
  350.         avg(amount) as srednie_wydatki_vyber
  351.  
  352. FROM trans
  353. WHERE (type = 'VYDAJ' and operation = 'VYBER')
  354. GROUP BY account_id;
  355. quit;
  356.  
  357. data trans_wp1;
  358. set trans_wplywy_vklad;
  359. run;
  360. data trans_wp2;
  361. set trans_wplywy;
  362. run;
  363.  
  364.  
  365. data temp_wsk_wklad;
  366. merge trans_wp1(in=trans_wp1) trans_wp2(in=trans_wp2);
  367. by account_id;
  368. run;
  369.  
  370. data wsk_wklad(keep = account_id wsk_wkl_proc);
  371. set temp_wsk_wklad;
  372. wsk_wkl_proc = (laczne_wplywy_vklad/laczne_wplywy)*100;
  373. run;
  374.  
  375.  
  376.  
  377. data temp_wsk_vyber_p;
  378. merge trans_wydatki_vyber(in=trans_wydatki_vyber) trans_wydatki(in=trans_wydatki);
  379. by account_id;
  380. run;
  381.  
  382. data wsk_vyber_p(keep = account_id wsk_vyber_p_proc);
  383. set temp_wsk_vyber_p;
  384. wsk_vyber_p_proc = (laczne_wydatki_vyber/laczne_wydatki)*100;
  385. run;
  386.  
  387.  
  388.  
  389. data temp_wsk_vyber_k;
  390. merge trans_wydatki_vyberkart(in=trans_wydatki_vyberkart) trans_wydatki(in=trans_wydatki);
  391. by account_id;
  392. run;
  393.    
  394.  
  395. data wsk_vyber_k(keep = account_id wsk_vyber_k_proc);
  396. set temp_wsk_vyber_k;
  397. wsk_vyber_k_proc = (laczne_wydatki_vyberkart/laczne_wydatki)*100;
  398. run;
  399. data wsk_vyber_k2;
  400. set wsk_vyber_k;
  401.         if wsk_vyber_k_proc=. then do wsk_vyber_k_proc=0;
  402.         end;
  403. run;
  404.  
  405. data zwiek;
  406. set asd.zwiek;
  407. run;
  408. data zlecstale;
  409. set asd.zlecstale;
  410. run;
  411. data liczbamiesz;
  412. set asd.liczbamiesz;
  413. run;
  414. data bezrob;
  415. set asd.bezrob;
  416. run;
  417. data czydluznik;
  418. set asd.czydluznik;
  419. run;
  420. data liczbamiast;
  421. set asd.liczbamiast;
  422. run;
  423. data sredniapensja;
  424. set asd.sredniapensja;
  425. run;
  426. data stazklienta;
  427. set asd.stazklienta;
  428. run;
  429. data udzialmiastowych;
  430. set asd.udzialmiastowych;
  431. run;
  432. data wskaprzedsiebiorcow;
  433. set asd.wskaprzedsiebiorcow;
  434. run;
  435.  
  436. proc sql;
  437. CREATE table tabelakoncowa as
  438. SELECT *
  439.  
  440. FROM (((((((zwiek
  441. INNER JOIN  liczbamiesz ON liczbamiesz.client_id = zwiek.client_id)
  442. INNER JOIN  liczbamiast ON liczbamiast.client_id = zwiek.client_id)
  443. INNER JOIN  sredniapensja ON sredniapensja.client_id = zwiek.client_id)
  444. INNER JOIN  stazklienta ON stazklienta.client_id = zwiek.client_id)
  445. INNER JOIN  udzialmiastowych ON udzialmiastowych.client_id = zwiek.client_id)
  446. INNER JOIN  wskaprzedsiebiorcow ON wskaprzedsiebiorcow.client_id = zwiek.client_id)
  447. INNER JOIN  bezrob ON bezrob.client_id = zwiek.client_id);
  448. quit;
  449.  
  450. proc sort data = tabelakoncowa;
  451. by account_id;
  452. quit;
  453.  
  454. proc sql;
  455. CREATE TABLE tabelakoncowa2 as
  456. SELECT *
  457.  
  458. FROM (((((((((((tabelakoncowa
  459. LEFT JOIN  czydluznik2 ON czydluznik2.account_id= tabelakoncowa.account_id)
  460. LEFT JOIN  trans_wplywy ON trans_wplywy.account_id= tabelakoncowa.account_id)
  461. LEFT JOIN  trans_wplywy_vklad ON trans_wplywy_vklad.account_id= tabelakoncowa.account_id)
  462. LEFT JOIN  trans_wydatki ON trans_wydatki.account_id= tabelakoncowa.account_id)
  463. LEFT JOIN  trans_wydatki_vyber ON trans_wydatki_vyber.account_id= tabelakoncowa.account_id)
  464. LEFT JOIN  trans_wydatki_vyberkart ON trans_wydatki_vyberkart.account_id= tabelakoncowa.account_id)
  465. LEFT JOIN  wsk_vyber_k2 ON wsk_vyber_k2.account_id= tabelakoncowa.account_id)
  466. LEFT JOIN  wsk_vyber_p ON wsk_vyber_p.account_id= tabelakoncowa.account_id)
  467. LEFT JOIN  wsk_wklad ON wsk_wklad.account_id= tabelakoncowa.account_id)
  468. LEFT JOIN  zlecstale2ubezsipo ON zlecstale2ubezsipo.account_id= tabelakoncowa.account_id)
  469. LEFT JOIN  zlecstale2ubezpojistne ON zlecstale2ubezpojistne.account_id= tabelakoncowa.account_id);
  470. quit;
  471.  
  472. data projekt;
  473. set tabelakoncowa2;
  474. if laczne_wydatki_vyberkart = . then do laczne_wydatki_vyberkart = 0;
  475. end;
  476. if srednie_wydatki_vyberkart = . then do srednie_wydatki_vyberkart = 0;
  477. end;
  478. if laczne_wydatki_dom = . then do laczne_wydatki_dom = 0;
  479. end;
  480. if srednia_wydatki_ubez = . then do srednia_wydatki_ubez = 0;
  481. end;
  482. if laczne_wydatki_ubez = . then do laczne_wydatki_ubez = 0;
  483. end;
  484. run;
  485.  
  486. proc sql;
  487. create table projekt2 as
  488. select *
  489. from (loan2
  490. left join projekt on loan2.account_id = projekt.account_id);
  491. quit;
  492.  
  493. data projektkonc (drop = account_id date client_id district_id disp_id);
  494. set projekt2;
  495. run;
  496.  
  497. data tabela_finalna1;
  498. set Tmp1.tabela_finalna(rename=(data_ur=data_urodzenia  srednia_pensja=srednie_zarobki udzial_miesz_miast=proc_miastowych data_konta = data_utw_konta
  499. wsk_przedsiebiorcow_1000=wsk_przedsiebiorcow
  500. przyrost_bezrob_proc=wsk_bezrobocia zm_czydluznik=dluznik laczne_wplywy=suma_wplywow srednie_wplywy=srednia_wplywow   laczne_wplywy_vklad=suma_wpl_vklad
  501. srednie_wplywy_vklad = srednia_wpl_vklad));
  502. drop birth_number;
  503. run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement