Hi there, I have two data sets: have and have1 (have1 is relatively unimportant so I didn't list it below. First I want to create a series of new variables (var_1 - var_42, however here I only listed var1-var4) to Have and to define var_i = date if count = i (please see the ideal output Want). The code (listed right below) that I ran gave me a result but it's not the one that I want (listed at the bottom). Also is there an easier way than using %let to define a series of variables in a similar naming convention? data want; set have; array var (42) var_1 - var_42; do i= 1 to 42; if count = i then var(i) = date; end; format var_1 - var date9.; drop i; run; %let var_i = var_1,var_2,var_3,var_4,var_5,var_6,var_7,var_8,var_9,var_10,var_11,var_12,var_13,var_14,var_15,var_16,var_17,var_18,var_19, var_20,var_21,var_22,var_23,var_24,var_25,var_26,var_27,var_28,var_29,var_30,var_31,var_32,var_33,var_34,var_35,var_36,var_37,var_38,var_39, var_40,var_41,var_42; proc sql; create table want_1 as select a.*, b.&var_i from have1 a left join want b on a.id = b.id and a.year = b.year; quit; Have ID Year Date Count 1 2006 5/31/2006 1 1 2007 6/7/2007 1 1 2008 7/8/2008 1 1 2009 7/13/2009 1 1 2009 7/8/2008 2 2 2009 12/23/2008 1 2 2009 1/30/2009 2 2 2009 9/30/2009 3 2 2009 12/15/2008 4 Want ID Year Date Count var_1 var_2 var_3 var_4 1 2006 5/31/2006 1 5/31/2006 1 2007 6/7/2007 1 6/7/2007 1 2008 7/8/2008 1 7/8/2008 1 2009 7/13/2009 1 7/13/2009 7/8/2008 2 2009 12/23/2008 1 12/23/2008 1/30/2009 9/30/2009 12/15/2008 ID Year Date Count var_1 var_2 var_3 var_4 1 2006 5/31/2006 1 5/31/2006 1 2007 6/7/2007 1 6/7/2007 1 2008 7/8/2008 1 7/8/2008 1 2009 7/13/2009 1 7/13/2009 1 2009 7/8/2008 2 7/8/2008 2 2009 12/23/2008 1 12/23/2008 2 2009 1/30/2009 2 1/30/2009 2 2009 9/30/2009 3 9/30/2009 2 2009 12/15/2008 4 12/15/2008
... View more