SHOW:
|
|
- or go back to the newest paste.
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 | - | INNER JOIN bezrob ON bezrob.client_id = zwiek.client_id) |
448 | + | |
449 | - | ; |
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; |