View difference between Paste ID: uPLXTeQs and HjYdJGBK
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;