Hello, I'm a new SAS user and I'm having a bit of difficulty with manipulating data using the data step. I'm working with almost entirely numeric data, and I frequently want to define a new variable as a function of both other variables and other observations. For example, I'm currently working with data that was collected over a number of years, up to 2010. I have three relevant variables: YEAR and RATIO. To create ADJRATIO, I want to follow this procedure: For the ith observation AGJRATIO_i: If YEAR_i=2010, then ADJRATIO_i=RATIO_i. Else: Find the value for RATIO that (1) was observed in 2010, (2) is less than RATIO_i, and (3) is maximal, given (1) and (2). More mathematically: Find k such that YEAR_k=2010, RATIO_i > RATIO_k, and RATIO_k >= RATIO_j, for all j such that YEAR_j=2010 as well. Then ADJRATIO_i = RATIO_k Coming from a background in MatLab and R, my strong instrinct is that this should be very easy to code. Instead, I'm finding it fiendishly difficult, and both asking friends more familiar with SAS and searching online have given me the impression that this is a fundamental difficulty in the language, rather than something I missed in the help index. So far, the best solution I've found is to make several datasets which each keep only one variable, transpose them, concatenate horizontally, and use arrays to do the arithmetic I'm aiming for. This will get *ridiculously* messy when I need to refer to more than one variable, as well as more than one observation, and I'm hoping there's a better solution. Does anyone have any thoughts that might be helpful to someone who's used to datasets being treated as MxN arrays, and being able to easily refer to (Observation_m, Variable_n)? Many thanks in advance.
... View more