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.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.