HI All,
I'm trying to make my program more efficient by using Arrays but can't find a way to make it work. Here is the current program:
data final;
merge visitcal tvisit2 eos;
by subject;
if END_OF_TREATMENT ne . then do;
if CYCLE_1_DAY_14 >= END_OF_TREATMENT then CYCLE_1_DAY_14= .;
if CYCLE_2_DAY_1 >= END_OF_TREATMENT then CYCLE_2_DAY_1 = .;
if CYCLE_2_DAY_15 >= END_OF_TREATMENT then CYCLE_2_DAY_15= .;
if CYCLE_3_DAY_1 >= END_OF_TREATMENT then CYCLE_3_DAY_1 = .;
if CYCLE_3_DAY_15 >= END_OF_TREATMENT then CYCLE_3_DAY_15= .;
if CYCLE_4_DAY_1 >= END_OF_TREATMENT then CYCLE_4_DAY_1 = .;
if CYCLE_4_DAY_15 >= END_OF_TREATMENT then CYCLE_4_DAY_15= .;
if CYCLE_5_DAY_1 >= END_OF_TREATMENT then CYCLE_5_DAY_1 = .;
if CYCLE_5_DAY_15 >= END_OF_TREATMENT then CYCLE_5_DAY_15= .;
if CYCLE_6_DAY_1 >= END_OF_TREATMENT then CYCLE_6_DAY_1 = .;
if CYCLE_6_DAY_15 >= END_OF_TREATMENT then CYCLE_6_DAY_15= .;
if CYCLE_7_DAY_1 >= END_OF_TREATMENT then CYCLE_7_DAY_1 = .;
if CYCLE_7_DAY_15 >= END_OF_TREATMENT then CYCLE_7_DAY_15= .;
if CYCLE_8_DAY_1 >= END_OF_TREATMENT then CYCLE_8_DAY_1 = .;
if CYCLE_8_DAY_15 >= END_OF_TREATMENT then CYCLE_8_DAY_15= .;
if CYCLE_9_DAY_1 >= END_OF_TREATMENT then CYCLE_9_DAY_1 = .;
if CYCLE_9_DAY_15 >= END_OF_TREATMENT then CYCLE_9_DAY_15= .;
if CYCLE_10_DAY_1 >= END_OF_TREATMENT then CYCLE_10_DAY_1 = .;
if CYCLE_10_DAY_15 >= END_OF_TREATMENT then CYCLE_10_DAY_15= .;
if CYCLE_11_DAY_1 >= END_OF_TREATMENT then CYCLE_11_DAY_1 = .;
if CYCLE_11_DAY_15 >= END_OF_TREATMENT then CYCLE_11_DAY_15= .;
if CYCLE_12_DAY_1 >= END_OF_TREATMENT then CYCLE_12_DAY_1 = .;
if CYCLE_12_DAY_15 >= END_OF_TREATMENT then CYCLE_12_DAY_15= .;
end;
run;
Basically I want to make all "Cycles" = . based on the following conditions. Thanks!
To save myself some typing, I'm not going to type all of your variable names
array x CYCLE_1_DAY_14 CYCLE_2_DAY_1 CYCLE_2_DAY_15;
if end_of_treatment ne . then do i=1 to dim(x);
if x(i) >= END_OF_TREATMENT then x(i) = .;
end;
To save myself some typing, I'm not going to type all of your variable names
array x CYCLE_1_DAY_14 CYCLE_2_DAY_1 CYCLE_2_DAY_15;
if end_of_treatment ne . then do i=1 to dim(x);
if x(i) >= END_OF_TREATMENT then x(i) = .;
end;
Homework assignment: try it and see if it works.
If not, then there are ways of extracting the variables names from DICTIONARY tables into a macro variable that ought to eliminate the need to type all of the variable names.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.