@@ -24,6 +24,10 @@ xvar= categorical x-axis variable
24
24
25
25
*---------- optional parameters ----------;
26
26
27
+ completecases= whether or not to require non-missing yvar at all xvar values
28
+ valid values: yes/no.
29
+ default: yes.
30
+
27
31
outlib= library in which to save NODES and LINKS datasets
28
32
default is the WORK library
29
33
@@ -44,6 +48,7 @@ xvarord= sort order for x-axis conversion, in a comma separated list
44
48
,subject=
45
49
,yvar=
46
50
,xvar=
51
+ ,completecases=
47
52
,outlib=work
48
53
,yvarord=
49
54
,xvarord=
@@ -84,8 +89,8 @@ xvarord= sort order for x-axis conversion, in a comma separated list
84
89
85
90
%let _dataexist = %sysfunc (exist (&data ));
86
91
%if &_dataexist = 0 %then %do ;
87
- %put RawToSankey - > DATASET [&data ] DOES NOT EXIST ;
88
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
92
+ %put %str (W)ARNING: RawToSankey - > DATASET [&data ] DOES NOT EXIST ;
93
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
89
94
%return ;
90
95
%end ;
91
96
@@ -104,20 +109,20 @@ xvarord= sort order for x-axis conversion, in a comma separated list
104
109
%mend varexist ;
105
110
106
111
%if %varexist(&data ,&subject ) = 0 %then %do ;
107
- %put RawToSankey - > VARIABLE [&subject ] DOES NOT EXIST ;
108
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
112
+ %put %str (W)ARNING: RawToSankey - > VARIABLE [&subject ] DOES NOT EXIST ;
113
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
109
114
%return ;
110
115
%end ;
111
116
112
117
%if %varexist(&data ,&yvar ) = 0 %then %do ;
113
- %put RawToSankey - > VARIABLE [&yvar ] DOES NOT EXIST ;
114
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
118
+ %put %str (W)ARNING: RawToSankey - > VARIABLE [&yvar ] DOES NOT EXIST ;
119
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
115
120
%return ;
116
121
%end ;
117
122
118
123
%if %varexist(&data ,&xvar ) = 0 %then %do ;
119
- %put RawToSankey - > VARIABLE [&xvar ] DOES NOT EXIST ;
120
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
124
+ %put %str (W)ARNING: RawToSankey - > VARIABLE [&xvar ] DOES NOT EXIST ;
125
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
121
126
%return ;
122
127
%end ;
123
128
@@ -126,7 +131,9 @@ xvarord= sort order for x-axis conversion, in a comma separated list
126
131
127
132
data _nodes00 ;
128
133
set &data ;
129
- where not missing (&yvar );
134
+ %if &completecases = yes %then %do ;
135
+ where not missing (&yvar );
136
+ %end ;
130
137
run ;
131
138
132
139
@@ -317,9 +324,9 @@ xvarord= sort order for x-axis conversion, in a comma separated list
317
324
%*---------- same number of values ----------;
318
325
319
326
%if &n_yvarord ne &n_yvar %then %do ;
320
- %put RawToSankey - > NUMBER OF yvarord= VALUES [&n_yvarord ];
321
- %put RawToSankey - > DOES NOT MATCH NUMBER OF yvar= VALUES [&n_yvar ];
322
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
327
+ %put %str (W)ARNING: RawToSankey - > NUMBER OF yvarord= VALUES [&n_yvarord ];
328
+ %put %str (W)ARNING: RawToSankey - > DOES NOT MATCH NUMBER OF yvar= VALUES [&n_yvar ];
329
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
323
330
%return ;
324
331
%end ;
325
332
@@ -360,16 +367,16 @@ xvarord= sort order for x-axis conversion, in a comma separated list
360
367
run ;
361
368
362
369
%if &_badyvar eq 1 %then %do ;
363
- %put RawToSankey - > VALUE WAS FOUND IN yvarord= [&_yvarordlist ];
364
- %put RawToSankey - > THAT IS NOT IN yvar= [&_yvarlist ];
365
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
370
+ %put %str (W)ARNING: RawToSankey - > VALUE WAS FOUND IN yvarord= [&_yvarordlist ];
371
+ %put %str (W)ARNING: RawToSankey - > THAT IS NOT IN yvar= [&_yvarlist ];
372
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
366
373
%return ;
367
374
%end ;
368
375
369
376
%if &_badyvar eq 2 %then %do ;
370
- %put RawToSankey - > VALUE WAS FOUND IN yvar= [&_yvarlist ];
371
- %put RawToSankey - > THAT IS NOT IN yvarord= [&_yvarordlist ];
372
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
377
+ %put %str (W)ARNING: RawToSankey - > VALUE WAS FOUND IN yvar= [&_yvarlist ];
378
+ %put %str (W)ARNING: RawToSankey - > THAT IS NOT IN yvarord= [&_yvarordlist ];
379
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
373
380
%return ;
374
381
%end ;
375
382
@@ -382,9 +389,9 @@ xvarord= sort order for x-axis conversion, in a comma separated list
382
389
%*---------- same number of values ----------;
383
390
384
391
%if &n_xvarord ne &n_xvar %then %do ;
385
- %put RawToSankey - > NUMBER OF xvarord= VALUES [&n_xvarord ];
386
- %put RawToSankey - > DOES NOT MATCH NUMBER OF xvar= VALUES [&n_xvar ];
387
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
392
+ %put %str (W)ARNING: RawToSankey - > NUMBER OF xvarord= VALUES [&n_xvarord ];
393
+ %put %str (W)ARNING: RawToSankey - > DOES NOT MATCH NUMBER OF xvar= VALUES [&n_xvar ];
394
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
388
395
%return ;
389
396
%end ;
390
397
@@ -425,16 +432,16 @@ xvarord= sort order for x-axis conversion, in a comma separated list
425
432
run ;
426
433
427
434
%if &_badxvar eq 1 %then %do ;
428
- %put RawToSankey - > VALUE WAS FOUND IN xvarord= [&_xvarordlist ];
429
- %put RawToSankey - > THAT IS NOT IN xvar= [&_xvarlist ];
430
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
435
+ %put %str (W)ARNING: RawToSankey - > VALUE WAS FOUND IN xvarord= [&_xvarordlist ];
436
+ %put %str (W)ARNING: RawToSankey - > THAT IS NOT IN xvar= [&_xvarlist ];
437
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
431
438
%return ;
432
439
%end ;
433
440
434
441
%if &_badxvar eq 2 %then %do ;
435
- %put RawToSankey - > VALUE WAS FOUND IN xvar= [&_xvarlist ];
436
- %put RawToSankey - > THAT IS NOT IN xvarord= [&_xvarordlist ];
437
- %put RawToSankey - > THE MACRO WILL STOP EXECUTING.;
442
+ %put %str (W)ARNING: RawToSankey - > VALUE WAS FOUND IN xvar= [&_xvarlist ];
443
+ %put %str (W)ARNING: RawToSankey - > THAT IS NOT IN xvarord= [&_xvarordlist ];
444
+ %put %str (W)ARNING: RawToSankey - > THE MACRO WILL STOP EXECUTING.;
438
445
%return ;
439
446
%end ;
440
447
@@ -458,7 +465,6 @@ xvarord= sort order for x-axis conversion, in a comma separated list
458
465
%end ;
459
466
run ;
460
467
461
-
462
468
%*---------- enumerate xvar values ----------;
463
469
464
470
proc sort data=_nodes10 out =_nodes15;
@@ -473,8 +479,7 @@ xvarord= sort order for x-axis conversion, in a comma separated list
473
479
%end ;
474
480
run ;
475
481
476
-
477
- %*---------- keep only complete cases ----------;
482
+ %*---------- subset if doing complete cases ----------;
478
483
479
484
proc sql noprint;
480
485
select max (x)
@@ -488,11 +493,30 @@ xvarord= sort order for x-axis conversion, in a comma separated list
488
493
create table _nodes30 as
489
494
select *
490
495
from _nodes20
491
- group by &subject
492
- having count (* ) eq &xmax
496
+ %if &completecases eq yes %then
497
+ group by &subject
498
+ having count (* ) eq &xmax
499
+ ;
493
500
;
494
501
quit ;
495
502
503
+ %*---------- count subjects in case not doing complete cases ----------;
504
+
505
+ %global subject_n ;
506
+
507
+ proc sql noprint;
508
+ select count (distinct &subject)
509
+ into :subject_n
510
+ %if &completecases eq yes %then
511
+ from _nodes30
512
+ ;
513
+ %if &completecases eq no %then
514
+ from _nodes10
515
+ ;
516
+ ;
517
+ %put &= subject_n;
518
+ quit ;
519
+
496
520
497
521
%*-----------------------------------------------------------------------------------------;
498
522
%*---------- transform raw data to nodes structure ----------;
@@ -558,9 +582,13 @@ xvarord= sort order for x-axis conversion, in a comma separated list
558
582
%*--------------------------------------------------------------------------------;
559
583
560
584
561
- proc datasets library =work nolist ;
562
- delete _nodes: _links:;
563
- run ; quit ;
585
+ %if &debug eq no %then %do ;
586
+
587
+ proc datasets library =work nolist ;
588
+ delete _nodes: _links:;
589
+ run ; quit ;
590
+
591
+ %end ;
564
592
565
593
566
594
%*---------- return code ----------;
0 commit comments